我有一个使用鼠标点击的脚本,因此控制台窗口不活动。因此,如果我想终止循环,我不能简单地使用Ctrl-C来键盘中断它。
如果按下某个键,如何在循环中加入一个检查来打破它?例如,我想要一些形式:
while True:
if key_pressed.ascii() == 27: #escape is pressed
break
print('foo')
我尝试过使用msvcrt
但它只在窗口处于活动状态时才有效。我尝试过使用pyHook但无法在循环中使用它。
修改 这是一个几乎按照我希望的方式工作的例子。但是它在完成运行后不会正常退出(即使使用sys.exit()),而且当在我的实际代码中实现时,pygame.event.pump()调用似乎搞乱了循环代码。我在这里做错了什么?
import pyHook, pygame, sys
def OnKeyboardEvent(event):
if event.Ascii==27:
global shouldBreak
shouldBreak=True
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
shouldBreak=False
pygame.init()
while True:
pygame.event.pump()
if shouldBreak:
break
#loop code
print('foo')
#post loop code
print('bar')
sys.exit()