class Clicked():
dogame=True
def __init__(self):
None
def change(self):
self.dogame=False
currentgame=Clicked()
root = Tk()
def quitt():
root.destroy()
currentgame.change()
qbutton = Button(base, text = "Quit", command = quitt(), foreground = "Red", **kwargs)
qbutton.pack(side = BOTTOM)
这是我正在尝试编写的游戏代码的一部分。我想知道为什么当我点击qbutton时它不会破坏窗口。我需要它,以便当我按下按钮时我也改变了dogame的值,所以我不能简单地设置command = root.destroy
答案 0 :(得分:1)
命令需要一个功能。您已提供函数的返回值。
你的意思是
qbutton = Button(base, text = "Quit", command = quitt, foreground = "Red", **kwargs)
通过从quitt
删除括号,我们不再对其进行评估。由于函数是python中的第一类对象,我们可以像其他任何东西一样传递它们。一旦你调用了这个函数,你就会传递它返回的内容。在这种情况下,它隐含地返回None的事实掩盖了错误
请注意,您考虑过使用root.destroy
;这与使用root.destroy()
和调用语法
答案 1 :(得分:0)
当您指定command = quitt()
时,您在构建按钮时调用该函数,然后将该函数返回的内容(None
)添加到命令调用中。
相反,将callable添加到命令:
qbutton = Button(base, text = "Quit", command = quitt, foreground = "Red", **kwargs)