使用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()
这也不起作用
答案 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()