Ответ 1
Scale
вызывает функцию, переданную как command
, с одним аргументом, поэтому вы должны использовать ее (хотя сразу же выбросите ее).
Изменить:
command=lambda: scale_changed('LED')
к
command=lambda x: scale_changed('LED')
Я новичок в программировании на питоне и все еще пытаюсь понять использование лямбда. Был 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'))
Scale
вызывает функцию, переданную как command
, с одним аргументом, поэтому вы должны использовать ее (хотя сразу же выбросите ее).
Изменить:
command=lambda: scale_changed('LED')
к
command=lambda x: scale_changed('LED')
Это, по-видимому, потому, что команде передан аргумент, который, возможно, вам не нужен. Попробуйте изменить lambda из
command=lambda:scale_changed('LED')
к
command=lambda x:scale_changed('LED')
Вам следует обратиться к документации Tkinter :
Масштабный виджет
command
- Процедура, которую нужно вызывать каждый раз при перемещении ползунка. Эта процедура будет передана по одному аргументу, новому значению шкалы. Если слайдер перемещается быстро, вы не можете получить обратный вызов для каждой возможной позиции, но вы обязательно получите обратный вызов, когда он опустится.Виджет кнопок
command
- Функция или метод, который должен вызываться при нажатии кнопки.
Измените lambda
на
command=lambda new_scale_val: scale_changed('LED')