пока не ошибка - как сделать альтернативу - PullRequest
0 голосов
/ 05 августа 2020

Это текущий код:

def wait_for_button(button):
    while not (button.read()) :
        pass
wait_for_button(push_button1)
print('Hi')
wait_for_button(push_button2)
print('Bye')

Но проблема с этим кодом в том, что сначала нужно нажать push_button1, и только тогда сработает кнопка pu sh 2. Если пу sh кнопка 1 не была нажата до пу sh кнопки 2, он не распечатает «Пока» (со ссылкой на код выше).

Есть ли способ, чтобы вместо входа в последовательность (pushputton1-> pushbutton2), он может go в любом случае, т.е. независимо от того, какая кнопка будет нажата первой, код все равно будет работать? Спасибо

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Если я правильно понял вопрос, вы хотите выйти при нажатии кнопки 2 (независимо от того, была ли нажата кнопка 1). Для такого случая вы можете создать следующую функцию:

def wait_for_buttons(button1, button2):
    button1_pressed = False
    button2_pressed = False

    while not button2_pressed:
        if button1.read():
            button1_pressed = True
            print("Hi")
        if button2.read():
            button2_pressed = True

wait_for_buttons(push_button1, push_button2)
print('Bye')
0 голосов
/ 05 августа 2020

Если я правильно понял, и вы хотите проверить, нажаты ли обе кнопки, и только потом выведите «Bye». Вы можете создать 2 логические переменные для кнопок 1 и 2, а затем, если обе переменные имеют значение true, напечатайте. Примерно так:

def wait_for_button(button1,button2):
    button_pressed1=False
    button_pressed2=False

    print ("Hi")
    while not button_pressed1 and not button_pressed2:
        if button1.read():
            button_pressed1=True
        if button2.read():
            button_pressed2=True
    print ("Bye")

Таким образом, не имеет значения, какая кнопка будет нажата первой, после того, как обе были нажаты в любом порядке, while l oop завершится, и функция напечатает «Bye».

...