【发布时间】:2021-07-30 08:55:46
【问题描述】:
我正在学习关于 tkinter 的教程。我修改了一些代码,想法是每次您单击按钮时,我们都会在下面的行中创建一个新的文本标签。令我困惑的是,当我写 command=click 时它可以工作,但是当我写 command = click() 时,该函数在脚本开头执行一次,但在按下按钮时不执行。第一个行为如我所料。第二种行为让我感到困惑,因为我希望它会引发错误,如果不按下按钮就不会执行该功能。
from tkinter import *
root = Tk()
position = {"Loc":1}
def click(position=position):
Label(root, text="ta").grid(row=position["Loc"], column=0)
position["Loc"] = position["Loc"] + 1
return
but = Button(root, text="click here to do nothing",command=click())
but.grid(row=0,column=0)
root.mainloop()
注意:我发现下面的答案比相关问题 here 的答案更有帮助,因为它明确表示在传递给函数之前首先评估参数。
【问题讨论】:
-
部分 - 但它似乎并不能解释为什么会发生某些事情而不是错误。即,命令期望接收对函数的引用,但实际上设置为等于函数的返回值。
-
@ClownDown 问题现已编辑。首先评估参数变量的解释(虽然事后看来很明显)在另一个问题中并不明确