我正在使用tkinter并尝试在按钮按下时将值分配给全局变量。这里是代码: popup.add_command(label="Allow Moving Item", command=lambda: allowMoving=True)
我得到无效的语法。你能告诉我如何解决这个问题吗? 非常感谢!lambda为全局变量赋值?
0
A
回答
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)
+0
谢谢,globals()。update(allowMoving = True)方法有效。额外的问题 - 如果它是局部变量,我可以改变它没有全局变量?附:我不需要lambda – sssseossss
1
请勿使用lambda
。一个好的经验法则是永远不要使用lambda
,除非没有别的办法。在回调中使用lambda
应该是例外而非规则。
def allow_moving():
global allowMoving
allowMoving = True
popup.add_command(label="Allow Moving Item", command=allow_moving)
相关问题
- 1. XSLT:如何为全局变量赋值
- 2. 全局范围变量及其赋值
- 3. 将值赋给全局变量
- 4. 将行的值赋给全局变量
- 5. 解构赋值变量作为全局常量
- 6. 在为全局变量赋值之前引用的局部变量'delete'
- 7. android:如何从sql查询中为全局变量赋值?
- 8. 从事件处理函数内部为全局变量赋值?
- 9. 为函数内的全局变量赋值
- 10. 在JavaScript中为动态全局变量创建&赋值
- 11. 为PHP全局变量赋值以提醒
- 12. jQuery-为什么赋值给全局变量不起作用?
- 13. Lambda表达式/委托赋值变量
- 14. 将全局变量的值赋值给对象
- 15. Python - 将全局变量赋值给函数返回需要函数为全局变量?
- 16. 如何将值赋给node.js中的全局变量?
- 17. 什么时候全局变量被赋值?
- 18. 如何将此值赋给c#中的全局变量?
- 19. Jquery全局变量赋值和在javascript函数中使用
- 20. 如何将函数赋值给javascript node.js中的全局变量?
- 21. java - 无法在invokeAndWait中赋值给全局字符串变量
- 22. perl/mason:将值赋给handler.pl中的全局变量
- 23. 将值赋给javascript中的全局变量
- 24. bash管道阻止全局变量赋值
- 25. Jquery为JSP变量赋值
- 26. Javascript全局变量设置为新值
- 27. 局部变量赋值与直接赋值;属性和内存
- 28. 失去全局变量值
- 29. 变量赋值
- 30. Javascript全局变量为空
使用功能。不要使用全局变量。 – Daniel
避免全局变量。如果您需要答案,请参阅http://stackoverflow.com/a/21054384/1627968。 – benjamin
'command = lambda:allowMoving = True' - >'SyntaxError:can not assign to lambda'('lambda's只能包含一个表达式,没有语句)。用正常定义的函数的名称替换它。 – martineau