Python:关闭子子窗口会阻止打开新的子子窗口

时间:2015-04-07 22:52:00

标签: python tkinter window children grandchild

对于我在应用科学大学实验室的工作,我需要创建一个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()

这是迄今为止的第三次尝试,在我完成研究之后,我开始认为处理子孩子并不像我想的那么容易。

那么好, 非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

问题是你有一个名为Praktikum1的函数,然后你创建了一个名为Praktikum1的全局变量,导致该函数被销毁。因此,下次调用该函数时,您实际上是在“调用”该变量。

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