我正在使用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. JavaScript全局變量賦值
- 2. XSLT:如何爲全局變量賦值
- 3. 全局範圍變量及其賦值
- 4. 將行的值賦給全局變量
- 5. 將值賦給全局變量
- 6. javascript/jquery全局變量未被賦值
- 7. 解構賦值變量作爲全局常量
- 8. 在JavaScript中爲動態全局變量創建&賦值
- 9. 爲全局變量(以及函數的參數)賦值R
- 10. jQuery-爲什麼賦值給全局變量不起作用?
- 11. android:如何從sql查詢中爲全局變量賦值?
- 12. 從事件處理函數內部爲全局變量賦值?
- 13. 如何在JavaScript中爲全局變量賦值?
- 14. 爲PHP全局變量賦值以提醒
- 15. 爲函數內的全局變量賦值
- 16. Lambda表達式/委託賦值變量
- 17. 爲變量賦值
- 18. 將全局變量的值賦值給對象
- 19. Python - 將全局變量賦值給函數返回需要函數爲全局變量?
- 20. lambda表達式和全局變量
- 21. 針對全局變量賦值的Python語法警告
- 22. 將值賦給javascript中的全局變量
- 23. javascript將函數中的全局變量賦值不起作用
- 24. 使用$ .Ajax(JQuery)將值賦給全局變量
- 25. 如何將函數賦值給javascript node.js中的全局變量?
- 26. jquery在點擊時給全局變量賦值
- 27. bash管道阻止全局變量賦值
- 28. 什麼時候全局變量被賦值?
- 29. perl/mason:將值賦給handler.pl中的全局變量
- 30. java - 無法在invokeAndWait中賦值給全局字符串變量
使用功能。不要使用全局變量。 – Daniel
避免全局變量。如果您需要答案,請參閱http://stackoverflow.com/a/21054384/1627968。 – benjamin
'command = lambda:allowMoving = True' - >'SyntaxError:can not assign to lambda'('lambda's只能包含一個表達式,沒有語句)。用正常定義的函數的名稱替換它。 – martineau