对于我在应用科学大学实验室的工作,我需要创建一个Python程序,它可以创建一个子窗口,可以创建另一个窗口。
到目前为止,这很好用。
棘手的是,我关闭了孩子的孩子,并试图打开一个新的"孙子"主窗口。
关闭和开放也适用于第一个孩子的水平。我可以进入那个孩子,然后回到主菜单等等。
这是我正在处理的代码:
import tkinter
def Praktika():
global Praktika
Praktika = tkinter.Toplevel(main)
Praktika.geometry("320x200")
Prak1 = tkinter.Button(Praktika, text="Praktikum 1", command =Praktikum1)
Prak1.pack()
Haupt = tkinter.Button(Praktika, text="Hauptmenu", command = ClosePraktika)
Haupt.pack()
def ClosePraktika():
Praktika.destroy()
def Praktikum1():
global Praktikum1
Praktikum1 = tkinter.Toplevel(main)
Praktikum1.geometry("320x200")
Haupt = tkinter.Button(Praktikum1, text="Hauptmenu", command = ClosePraktikum1)
Haupt.pack()
def ClosePraktikum1():
Praktika.destroy()
Praktikum1.destroy()
def CloseAll():
main.quit()
main = tkinter.Tk()
main.geometry("320x200")
main.title("Fueh")
tkinter.Button(main, text="Praktika", command=Praktika).pack()
tkinter.Button(main, text="Exit", command=CloseAll).pack()
main.mainloop()
这是迄今为止的第三次尝试,在我完成研究之后,我开始认为处理子孩子并不像我想的那么容易。
那么好, 非常感谢你的帮助!
答案 0 :(得分:1)
问题是你有一个名为Praktikum1
的函数,然后你创建了一个名为Praktikum1
的全局变量,导致该函数被销毁。因此,下次调用该函数时,您实际上是在“调用”该变量。
不要对全局变量和函数使用相同的名称。