我正在尝试使用lambda为tkinter按钮创建回调。在
有多个按钮,每个回调都需要在其中传递一个对象。下面的代码就是我正在做的,运行良好
var0 = tk.StringVar()
label = tk.Label(top, bg = "White",height = 2, width = 12,textvariable=var0, justify="right")
def b0Callback(var):
var.set(var.get()+"0")
return
# creating a label which will print value of the any of the 0-9 button pressed
# creating a button 0
b0 = tk.Button(numFrame0, height = 1, width = 4, bg = "grey", text =
"0",command = lambda: b0Callback(var0))
#there are more buttons like that
var0用于更新标签。上面的代码运行得很好,但我必须为0到9创建回调,我必须重复上面的定义。所以我尝试使用this教程中的以下示例
^{pr2}$我用了它
def Callback(n):
return lambda var.set(var.get()+n)
b0Callback = Callback("0")
这在返回行中显示错误invalid index变量集在
在这种情况下,有没有办法传递var0来避免这个错误?在
我现在已经解决了这个问题,这是最后的代码:
我还将按钮的数量改为300个,并添加了代码来将它们排列在一个漂亮的网格中,只是为了好玩。(您可以通过更改
for number in range(1, whatever)
将其更改为任意多个。在也许只有我一个人,但如果你只想在标签文本中添加一个数字,我看不出使用lambda的理由。在
让我们为它创建一个函数,该函数将StringVar()作为变量并向其添加一些数字:
要运行这个命令,我们只需将它作为lambda函数放入代码中,否则它将在初始化时运行(因为我们提供的是函数而不是引用)。在
为了在一个按钮内运行它,我们声明如下:
^{pr2}$“5”可能会更改为任何其他数字。在
相关问题 更多 >
编程相关推荐