程序尝试关闭窗口时出现未定义的错误?

时间:2018-12-20 09:33:30

标签: python-3.x tkinter

使用Tkinter和Gui创建的实验似乎无法一键按下就运行两个命令。

我已经尝试过将第二个定义从第一个定义移至与以前相同的错误。问题在于它是我主窗口的单独窗口,因此具有不同的定义含义。当我尝试过以前的线程答案时,它对我不起作用。

def cheese():
    fll = Tk()

    #The two commands linked together
    def fildes():
        filling2()
        fll.destroy

    fll.title=("Test")

    ll = Label(fll, text ="Would you like to choose another topping?").pack()
    #The button under this runs fildes()
    bb = Button(fll, text ="Yep", command = fildes).pack()
    bbb = Button(fll, text ="No", command = fll.destroy).pack()

它应该创建一个窗口,并在按下Yes按钮时打开一个新窗口,同时关闭当前窗口。

它会打开新窗口,但由于未定义fll而无法删除当前窗口

    def fildes():
        filling2()
        fll.destroy()

这也不起作用

1 个答案:

答案 0 :(得分:0)

解决方案:

始终尝试将参数传递给函数。如果我看到此权利,则Tkinter仅调用独立的filedes()函数,而对 cheese 中的局部变量一无所知。

将要破坏的窗口 传递给文件 ,如下所示:

def fildes(old:Tk):
    old.destroy()
    filling2()

然后 fll 作为参数添加到按钮的命令中。 (Can be done like this.)

bb = Button(fll, text ="Yep", command = lambda: fildes(fll))


PS

当我尝试运行您的代码时,我必须像这样调用.pack(),否则将无法正常工作:

sample = Button()
sample.pack()