Я пишу скрипт python, который будет управлять светодиодами с Wiimote, используя библиотеку cwiid. Программа распознает wiimote и может запускать циклы, но она не позволит мне остановить цикл, когда пользователь нажимает «B» на пульте дистанционного управления. Вот соответствующий код, и я могу предоставить остальную часть скрипта, если это необходимо. Благодарю.Python цикл выхода с кнопкой Wiimote нажмите
buttons = wii.state['buttons']
...
if (buttons & cwiid.BTN_A):
print 'Button A pressed'
print 'Press B to cancel loop'
keepRunning = True
while keepRunning:
blink(32)#5v green
blink(38)#5v yellow
blink(36)#5v blue
blink(40)#5v red
blink(37)#3v3 green
blink(35)#3v3 yellow
blink(33)#3v3 blue
blink(31)#3v3 red
if (buttons & cwiid.BTN_B):
keepRunning = False
time.sleep(button_delay)
Вот неподвижная петля за ответ Стюарта
if (buttons & cwiid.BTN_A):
print 'Button A pressed'
print 'Press B to cancel loop'
keepRunning = True
while keepRunning:
blink(32)#5v green
blink(38)#5v yellow
blink(36)#5v blue
blink(40)#5v red
blink(37)#3v3 green
blink(35)#3v3 yellow
blink(33)#3v3 blue
blink(31)#3v3 red
buttons = wii.state['buttons']#added in this line
if (buttons & cwiid.BTN_B):
keepRunning = False
time.sleep(button_delay)
Кроме того, нет никакой необходимости проверять 'снова buttons' в вашем вложенной' if' заявление, так как это гарантируется, что это будет верно с помощью первого 'if'. –
, если я сохраняю код как есть и просто выключаю keepRunning = False, чтобы сломаться, он не работает, поэтому программа никогда не вводит этот второй оператор if. Если я удалю кнопки так, чтобы моя секунда, если статут равен if (cwiid.BTN_B): break или keepRunning = False, тогда программа будет проходить через цикл один раз (ударить все мигания), а затем прекратить работу независимо от того, нажата ли кнопка B или нет – kalenpw
вы уверены, что 'cwiid.BTN_B' правильно отображается на' B'? –