我想在按空格键时打破无限循环。我不想使用Pygame,因为它会产生一个窗口。
我该怎么做?
答案 0 :(得分:1)
我得到了答案。我们可以使用msvcrt.kbhit()来检测按键。这是我写的代码。
import msvcrt
while 1:
print 'Testing..'
if msvcrt.kbhit():
if ord(msvcrt.getch()) == 32:
break
32是空格的数字。 27为esc。像这样我们可以选择任何键。
重要说明:这在IDLE中不起作用。使用终端。
答案 1 :(得分:0)
使用空间将很困难,因为每个系统都以不同方式映射它。如果你对回车没问题,这段代码可以解决问题:
import sys, select, os
i = 0
while True:
os.system('cls' if os.name == 'nt' else 'clear')
print ("I'm doing stuff. Press Enter to stop me!")
print (i)
if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
line = input()
break
i += 1
答案 2 :(得分:0)
Python有一个keyboard模块,具有许多功能。您可以在 Shell 和控制台中使用它。 安装它,也许使用此命令:
pip3 install keyboard
然后在代码中使用它:
import keyboard #Using module keyboard
while True: #making a loop
try: #used try so that if user pressed other than the given key error will not be shown
if keyboard.is_pressed(' '): #if key space is pressed.You can also use right,left,up,down and others like a,b,c,etc.
print('You Pressed A Key!')
break #finishing the loop
except:
pass
您可以将其设置为多个密钥检测:
if keyboard.is_pressed('up') or keyboard.is_pressed('down') or keyboard.is_pressed('left') or keyboard.is_pressed('right'):
#then do this
你也可以这样做:
if keyboard.is_pressed('up') and keyboard.is_pressed('down'): #if both keys are pressed at the same time.
#then do this
希望这有助于你。
感谢。