我正在使用tkinter并尝试在按下按钮时为全局变量赋值。这是代码:
popup.add_command(label="Allow Moving Item", command=lambda: allowMoving=True)
我得到了无效的语法。你能告诉我如何解决这个问题吗?
非常感谢!
答案 0 :(得分:1)
不要使用lambda
。一个好的经验法则是永远不要使用lambda
,除非别无其他办法。在回调中使用lambda
应该是例外而不是规则。
def allow_moving():
global allowMoving
allowMoving = True
popup.add_command(label="Allow Moving Item", command=allow_moving)
答案 1 :(得分:0)
仅限娱乐用途。
popup.add_command(label="Allow Moving Item",
command=lambda: globals().update(allowMoving=True))
(虽然globals()
未记录相同的"请勿修改返回值"警告为locals()
,我仍然不确定这是否可以保证有效。)
更好的答案是使用def
语句来定义回调。
def set_allow_moving():
global allow_moving # Don't use camel case for variable names in Python
allow_moving = True
popup.add_command(label="Allow Moving Item", command=set_allow_moving)