Я пытаюсь подключить некоторые кнопки к Raspberry Pi, чтобы они работали по-разному при их нажатии.Я хочу, чтобы каждый из них печатал свое имя и состояние при нажатии или отпускании кнопки.В этом примере я создаю три кнопки и устанавливаю их атрибуты when_pressed
и when_released
в цикле for:
#!/usr/bin/env python3
from gpiozero import LED, Button
from signal import pause
buttons = {
"bcn": Button(2),
"land": Button(3),
"taxi": Button(4)
}
for name, btn in buttons.items():
btn.when_pressed = lambda: print(name + ' ON')
btn.when_released = lambda: print(name + ' OFF')
print('ready')
pause()
Но, когда я нажимаю кнопки, они сообщают правильное состояние, но всеиз них сообщают одно и то же имя.Например, все кнопки могут отображать bcn ON
или bcn OFF
.Как ни странно, когда я перезапускаю скрипт, выбирается другое, по-видимому, случайное имя, и все кнопки сообщают, например, land ON
или land OFF
.
Мне кажется, что создается только одна лямбда-функция для всехобработчики пресса, и один для всех обработчиков выпуска.Как я могу изменить этот скрипт, чтобы печатать правильное имя для каждой кнопки?