Python:关闭 sub-child-window 会阻止打开新的 sub-child
Python: Closing a sub-child-window prevents the opening of a new sub-child
为了我在应用科学大学实验室的工作,我需要创建一个 Python-programm,它创建一个 child-windows,并有可能创建另一个。
目前为止一切正常。
棘手的是我关闭 childrens child 并尝试打开 main-window.
的新 "grandchild"
关闭和打开在第一个 child 级别上也可以正常工作。我可以输入 child、返回主菜单等等,只要我愿意。
这是我现在正在处理的代码:
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()
这是迄今为止的第三次尝试,在我完成研究后,我开始认为处理 sub-children 并不像我想的那么容易。
很好,
已经非常感谢您的帮助!
问题是您有一个名为 Praktikum1
的函数,然后您创建了一个名为 Praktikum1
的全局变量,这导致该函数被销毁。所以,下次调用该函数时,您实际上是 "calling" 变量。
不要对全局变量和函数使用相同的名称。
为了我在应用科学大学实验室的工作,我需要创建一个 Python-programm,它创建一个 child-windows,并有可能创建另一个。
目前为止一切正常。
棘手的是我关闭 childrens child 并尝试打开 main-window.
的新 "grandchild"关闭和打开在第一个 child 级别上也可以正常工作。我可以输入 child、返回主菜单等等,只要我愿意。
这是我现在正在处理的代码:
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()
这是迄今为止的第三次尝试,在我完成研究后,我开始认为处理 sub-children 并不像我想的那么容易。
很好, 已经非常感谢您的帮助!
问题是您有一个名为 Praktikum1
的函数,然后您创建了一个名为 Praktikum1
的全局变量,这导致该函数被销毁。所以,下次调用该函数时,您实际上是 "calling" 变量。
不要对全局变量和函数使用相同的名称。