2013-04-25 31 views
11

Tôi là một newbie để lập trình python và vẫn đang cố gắng tìm ra việc sử dụng lambda. Được worrking trên một số chương trình gui sau nhiều googling tôi figured rằng tôi cần phải sử dụng này cho các nút để làm việc như tôi cần nó đểLoạiError: <lambda>() không có đối số (1 đã cho)

NÀY CÔNG TRÌNH

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

nhưng khi tôi làm tương tự cho Scale nó không hoạt động

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

Trả lời

29

Scale gọi hàm truyền như command với một đối số, vì vậy bạn phải sử dụng nó (mặc dù thứ hàng nó đi ngay lập tức).

Thay đổi:

command=lambda: scale_changed('LED') 

để

command=lambda x: scale_changed('LED') 
+12

'_' theo truyền thống được sử dụng như mar ker của 'đối số không được sử dụng': 'command = lambda _: scale_changed ('LED')' – monoid

4

Đây là có lẽ vì các lệnh được thông qua một cuộc tranh cãi rằng có lẽ bạn không muốn. Hãy thử thay đổi lambda từ

command=lambda:scale_changed('LED') 

để

command=lambda x:scale_changed('LED') 
2

Bạn nên tham khảo Tkinter documentation:

Scale widget

command - A procedure to be called every time the slider is moved. This procedure will be passed one argument, the new scale value. If the slider is moved rapidly, you may not get a callback for every possible position, but you'll certainly get a callback when it settles.


Button widget

command - Function or method to be called when the button is clicked.

Thay đổi của bạn lambda để

command=lambda new_scale_val: scale_changed('LED') 
Các vấn đề liên quan