我正在编写一个根据算法工作的程序(也就是说,当您单击某些按钮时,会出现另一个窗口或带有结果的最终窗口,并且当您单击按钮时从 Toplevel(opennewwindow(1)) 开始应该出现另一个窗口)我编写了这个程序的基本代码,但是我未能在所有窗口上插入背景图像,以及为所有窗口设置全屏模式并关闭以前的窗口。这是代码(python 版本 - 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()#Конец цикла и запуск команды
当我单击程序中的按钮时,出现此错误,并且文本在第一个窗口中消失,并且背景图像不出现:
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'
无法插入背景图片,无法设为全屏模式
但我未能在所有窗口上插入背景图像,
以及为所有窗口设置全屏模式并关闭以前的窗口
问题可以解决。
你为什么不听@acw1668?
为什么要重复功能?
删除
background = PhotoImage()
您已经拥有 bg=PhotoImage
您缺少
file=
的关键字。应该是file=draw.jpg
。使用 Tkinter 时。
在标签小部件上,我在
image=bg
函数中添加 compound='bottom'
、f 字符串和 openNewWindow()
。
为 Him 和 Her 编写一个函数。
请勿为他和她重复
btn
。使用 btn
代表 他,使用 btn1
代表她。
最后,删除这个
btn.pack(pady = 10)
。你已经有了。
重写代码片段以减少编码:
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)##Оформление основного окна(начало)
主窗口截图:
为他或她在新窗口上截图: