首页 > 解决方案 > 程序尝试关闭窗口时出现未定义错误?

问题描述

尝试使用 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()

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

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

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

这也不起作用

标签: python-3.xtkinter

解决方案


解决方案:

始终尝试将参数传递给您的函数。如果我没看错的话,Tkinter 只调用了独立 函数,对cheesefiledes()中的局部变量一无所知。

将要销毁窗口传递这样的文件:

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

然后fll作为参数添加到按钮的命令中。(可以这样做。)

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


PS

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

sample = Button()
sample.pack()

推荐阅读