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" 变量。

不要对全局变量和函数使用相同的名称。