按空格键时如何打破for循环?

时间:2015-12-12 04:35:40

标签: python keypress

我想在按空格键时打破无限循环。我不想使用Pygame,因为它会产生一个窗口。

我该怎么做?

3 个答案:

答案 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

Source

答案 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

希望这有助于你。
感谢。