1
我正在写一个python脚本,将使用cwiid库控制与Wiimote的LED。该程序识别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)
另外,有没有真正需要检查'你嵌套'if'声明再次buttons',因为这通过第一个“if”保证是真实的。 –
如果我将代码保持原样,并且只需切换keepRunning = False即可中断,但它不起作用,所以程序从不会进入第二个if语句。如果我删除按钮,所以我的第二个如果陈述是if(cwiid.BTN_B):break或keepRunning = False,那么程序将通过循环运行一次(击中所有闪烁),然后终止,而不管B是否被按下 – kalenpw
你确定'cwiid.BTN_B'正确映射到'B'吗? –