15

我是 python 编程的新手,仍在尝试弄清楚 lambda 的用法。经过大量谷歌搜索后,我正在开发一些 gui 程序,我认为我需要使用它来让按钮按照我的需要工作

这行得通

mtrf = Button(root, text = "OFF",state=DISABLED,command = lambda:b_clicked("mtrf"))

但是当我对Scale做同样的事情时它不起作用

leds = Scale(root,from_=0,to=255, orient=HORIZONTAL,state=DISABLED,variable =num,command =lambda:scale_changed('LED'))
4

3 回答 3

38

Scale调用作为command一个参数传递的函数,因此您必须使用它(尽管立即将其丢弃)。

改变:

command=lambda: scale_changed('LED')

command=lambda x: scale_changed('LED')
于 2013-04-25T12:41:54.557 回答
5

这可能是因为该命令传递了一个您可能不想要的参数。尝试将 lambda 从

command=lambda:scale_changed('LED')

command=lambda x:scale_changed('LED')
于 2013-04-25T12:42:33.177 回答
2

您应该查阅 Tkinter文档

缩放小部件

command- 每次移动滑块时调用的过程。此过程将传递一个参数,即新的比例值。如果滑块快速移动,您可能不会收到所有可能位置的回调,但当它稳定时您肯定会收到回调。


按钮小部件

command- 单击按钮时要调用的函数或方法。

改变你lambda

command=lambda new_scale_val: scale_changed('LED')
于 2013-04-25T12:49:38.733 回答