I am writing a program that will work according to the algorithm (that is, when you click on some buttons can appear another window or the final window with the result, and from Toplevel(opennewwindow(1)) when you click on the buttons should appear another window) I wrote the basic code of this program, but I failed to insert a background image on all windows, as well as to make full screen mode for all windows and close previous windows. Here is the code (python version - 3.10)
from tkinter import * #Выводит библиотеку окон
from tkinter.ttk import * #Выводит библиотеку дополнительных окон
master = Tk()#Названии опции
master.geometry("1920x1080")#Размер окна
master.title("Окно")#Названия окна\
bg=PhotoImage("C:/Users/User/AppData/Local/Programs/Python/Python310/draw.jpg")
def openNewWindow():#Опция нового окна
newWindow = Toplevel(master)##Названии опции нового окна
newWindow.title("Второе окно")#Названия окна нового окна
newWindow.geometry('1920x1080')#Размер окна нового окна
Label(newWindow, #Начало титульного вопроса нового окна
text ="Вопрос №2").pack()# Конец титульного вопроса нового окна
btn = Button(newWindow,#Начало кнопки нового окна
text ="Да",#середина кнопки нового окна
command = openNewWindow)#Конец кнопки нового окна
btn.pack(pady = 10)#Оформление кнопки нового окна
btn = Button(newWindow,##Начало второй кнопки нового окна
text ="нет",#середина второй кнопки нового окна
command = openNewWindow1)#Конец второй кнопки нового окна
btn.pack(pady = 10)#Оформление второй кнопки нового окна
master.withdraw()
openNewWindow1.withdraw()
def openNewWindow1():##Опция нового dd второго окна
newWindow1 = Toplevel(master)###Названии опции нового окна
newWindow1.title("Третье окно")##Названия окна нового окна
newWindow1.geometry('1920x1080')##Размер окна нового окна
Label(newWindow1, ##Начало титульного вопроса нового окна
text ="Вопрос №3").pack()## Конец титульного вопроса нового окна
btn = Button(newWindow1,##Начало кнопки нового окна
text ="Да",##середина кнопки нового окна
command = openNewWindow)##середина кнопки нового окна#Конец кнопки нового окна
btn.pack(pady = 10)##Оформление кнопки нового окна
btn = Button(newWindow1,###Начало второй кнопки нового окна
text ="нет",##середина второй кнопки нового окна
command = openNewWindow2)##Конец второй кнопки нового окна
btn.pack(pady = 10)##Оформление второй кнопки нового окна
master.withdraw()
openNewWindow.withdraw()
def openNewWindow2():##Опция нового dd третьего окна
newWindow2 = Toplevel(master)###Названии опции нового третьего окна
newWindow2.title("Третье окно")##Названия окна нового третьего окна
newWindow2.geometry('1920x1080')##Размер окна нового третьего окна
Label(newWindow2, ##Начало титульного вопроса нового третьего окна
text ="Вопрос №4").pack()## Конец титульного вопроса нового третьего окна
btn = Button(newWindow2,##Начало кнопки нового третьего окна
text ="Да",##середина кнопки нового третьего окна
command = openNewWindow)##середина кнопки третьего нового окна#Конец кнопки нового третьего окна
btn.pack(pady = 10)##Оформление кнопки нового третьего окна
btn = Button(newWindow2,###Начало второй кнопки нового третьего окна
text ="нет",##середина второй кнопки нового третьего окна
command = openNewWindow1)##Конец второй кнопки нового третьего окна
btn.pack(pady = 10)##Оформление второй кнопки нового третьего окна
master.withdraw()
openNewWindow.withdraw()
background = PhotoImage()
label = Label(master, image=bg, #Вопрос основного окна(начало)
text ="Вопрос №1")##Вопрос основного окна(середина)
label.place(x=0, y=0)
label.pack(pady = 10)##Оформление основного окна(оформление)
btn = Button(master, ##Кнопка основного окна(начало)
text ="Да", ##Кнопка основного окна(середина)
command = openNewWindow)##Кнопка основного окна(середина)
btn.pack(pady = 10)##Оформление основного окна(начало)
btn = Button(master, ##Кнопка основного окна(начало)
text ="Нет", ##Кнопка основного окна(середина)
command = openNewWindow1)##Кнопка основного окна(середина)
btn.pack(pady = 10)##Оформление основного окна(начало)
btn.pack(pady = 10)#
mainloop()#Конец цикла и запуск команды
When I click on the buttons in the program, I get this error, and the text disappears in the first window, and the background image does not appear:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 27, in openNewWindow
openNewWindow1.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 27, in openNewWindow
openNewWindow1.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 45, in openNewWindow1
openNewWindow.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 63, in openNewWindow2
openNewWindow.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:/Users/User/AppData/Local/Programs/Python/Python310/sffsfsf.py", line 45, in openNewWindow1
openNewWindow.withdraw()
AttributeError: 'function' object has no attribute 'withdraw'
I can't insert background image, make full screen mode
but I failed to insert a background image on all windows,
as well as to make full screen mode for all windows and close previous windows
The problem can be fixed.
Why don't you listen to @acw1668?
Why are you duplicating functions?
I added a variable counter to count the number of windows.
Remove background = PhotoImage()
You already have bg=PhotoImage
You are missing keyword for file=
. Should be file=draw.jpg
. When using Tkinter.
On the Label widget, I add image=bg
, f-string, and compound='bottom'
in the openNewWindow()
function.
Write one function for both Him and Her.
Do not duplicate btn
for Him and Her. Use btn
for Him and btn1
for Her.
Lastly, remove this btn.pack(pady = 10)
. You already have.
Snippet re-wrote to reduce coding:
from tkinter import * #Выводит библиотеку окон
from tkinter.ttk import * #Выводит библиотеку дополнительных окон
master = Tk()#Названии опции
master.geometry("320x420")#Размер окна
master.title("Окно")#Названия окна\
bg=PhotoImage(file="p2.png")
counter = 0
def openNewWindow():#Опция нового окна
global counter
newWindow = Toplevel(master)##Названии опции нового окна
newWindow.title("Второе окно")#Названия окна нового окна
newWindow.geometry('320x420')#Размер окна нового окна
counter += 1
Label(newWindow, image=bg,
text =f"Вопрос {counter}", compound='bottom').pack()# Конец титульного вопроса нового окна
btn = Button(newWindow,#Начало кнопки нового окна
text ="Да",#середина кнопки нового окна
command = openNewWindow)#Конец кнопки нового окна
btn.pack(pady = 10)#Оформление кнопки нового окна
btn = Button(newWindow,##Начало второй кнопки нового окна
text ="нет",#середина второй кнопки нового окна
command = openNewWindow)#Конец второй кнопки нового окна
btn.pack(pady = 10)#Оформление второй кнопки нового окна
master.withdraw()
#openNewWindow1.withdraw()
label = Label(master, image=bg, #Вопрос основного окна(начало)
text ="Вопрос №1")##Вопрос основного окна(середина)
label.place(x=0, y=0)
label.pack(pady = 10)##Оформление основного окна(оформление)
btn = Button(master, ##Кнопка основного окна(начало)
text ="Да", ##Кнопка основного окна(середина)
command = openNewWindow)##Кнопка основного окна(середина)
btn.pack(pady = 10)##Оформление основного окна(начало)
btn1 = Button(master, ##Кнопка основного окна(начало)
text ="Нет", ##Кнопка основного окна(середина)
command = openNewWindow)##Кнопка основного окна(середина)
btn1.pack(pady = 10)##Оформление основного окна(начало)
Screenshot on main window:
Screenshot on new window for him or her: