TypeError:<lambda>()不带参数(给定1个)</lambda>

时间:2013-04-25 12:40:28

标签: python lambda tkinter

我是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'))

3 个答案:

答案 0 :(得分:36)

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

变化:

command=lambda: scale_changed('LED')

command=lambda x: scale_changed('LED')

答案 1 :(得分:5)

这可能是因为命令传递的参数可能是你不想要的。尝试从

更改lambda
command=lambda:scale_changed('LED')

command=lambda x:scale_changed('LED')

答案 2 :(得分:2)

您应该咨询Tkinter documentation

  

缩放小部件

     

command - 每次移动滑块时调用的过程。这个过程将传递一个参数,即新的比例值。如果滑块快速移动,您可能无法获得每个可能位置的回调,但在结算时肯定会收到回调。

     
     

按钮小部件

     

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

lambda更改为

command=lambda new_scale_val: scale_changed('LED')