0

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

这是迄今为止的第三次尝试,经过我所做的研究,我开始认为处理子孩子并不像我想的那么容易。

太好了,已经非常感谢您的帮助!

4

1 回答 1

1

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

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

于 2015-04-08T02:28:09.093 回答