在click命令中在python tkinter按钮中声明变量

时间:2017-02-25 16:12:21

标签: python-3.x variables button tkinter

我试图弄清楚我在按钮点击时声明变量时遇到的问题。例如,我希望为变量f分配值True。我似乎在使用Button函数声明变量的语法或方法方面遇到了麻烦。我事先初始化变量吗?我不太确定

这是我的代码:

import tkinter
from tkinter import *
root=Tk()
b1=Button(root,text="test", command=lambda: f=True)
b1.pack()
root.mainloop()

1 个答案:

答案 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表达式。