我试图弄清楚我在按钮点击时声明变量时遇到的问题。例如,我希望为变量f
分配值True
。我似乎在使用Button函数声明变量的语法或方法方面遇到了麻烦。我事先初始化变量吗?我不太确定
这是我的代码:
import tkinter
from tkinter import *
root=Tk()
b1=Button(root,text="test", command=lambda: f=True)
b1.pack()
root.mainloop()
答案 0 :(得分:1)
在Python中,赋值是一个语句,因此不能用简单的lambda
来完成,它只能包含表达式(函数调用,变量,属性,...... 不语句,返回 1 ,break,...)。要做你想做的事,你必须定义一个正常的函数:
f = False
def onclick():
global f
f = True
这将访问全局namescape的f
,(如果你在另一个函数中使用nonlocal
)并在函数中使用该变量。通过赋值,您将在外部范围中更改其值。
注意您必须在外部作用域中定义f
才能重新分配该作品。
要使用它,请将命令设置为onclick
:
b1=Button(root,text="test", command=onclick)
当你传递函数对象时,lambda
是不必要的
注意函数定义必须在之前作为命令参数传递给新Button
1:我的意思是从外部函数返回,而不是在lambda
内返回,因为返回了整个lambda表达式。