Подтвердить что ты не робот

TypeError: <lambda>() не принимает аргументов (1 данный)

Я новичок в программировании на питоне и все еще пытаюсь понять использование лямбда. Был worrking на некоторой программе gui после много googling, я решил, что мне нужно использовать это для кнопок, чтобы работать, поскольку мне нужно это

ЭТО РАБОТЫ

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'))
4b9b3361

Ответ 1

Scale вызывает функцию, переданную как command, с одним аргументом, поэтому вы должны использовать ее (хотя сразу же выбросите ее).

Изменить:

command=lambda: scale_changed('LED')

к

command=lambda x: scale_changed('LED')

Ответ 2

Это, по-видимому, потому, что команде передан аргумент, который, возможно, вам не нужен. Попробуйте изменить lambda из

command=lambda:scale_changed('LED')

к

command=lambda x:scale_changed('LED')

Ответ 3

Вам следует обратиться к документации Tkinter :

Масштабный виджет

command - Процедура, которую нужно вызывать каждый раз при перемещении ползунка. Эта процедура будет передана по одному аргументу, новому значению шкалы. Если слайдер перемещается быстро, вы не можете получить обратный вызов для каждой возможной позиции, но вы обязательно получите обратный вызов, когда он опустится.


Виджет кнопок

command - Функция или метод, который должен вызываться при нажатии кнопки.

Измените lambda на

command=lambda new_scale_val: scale_changed('LED')