当前位置: 首页 > 面试题库 >

如何在Python中检测ESCape按键?

赖星驰
2023-03-14
问题内容

我正在命令窗口(Windows 7,Python
3.1)中运行进程,我希望用户通过按ESCape键来中止该进程。但是,按ESCape键似乎没有执行任何操作:-(,循环永不中断。我也尝试从IDE(机翼)内部运行脚本,但同样,循环也不能中断。

以下是我的概念验证测试的简化版本…

import msvcrt
import time

aborted = False

for time_remaining in range(10,0,-1):
    # First of all, check if ESCape was pressed
    if msvcrt.kbhit() and msvcrt.getch()==chr(27):
        aborted = True
        break

    print(str(time_remaining))       # so I can see loop is working
    time.sleep(1)                    # delay for 1 second
#endfor timing loop

if aborted:
    print("Program was aborted")
else:
    print("Program was not aborted")

time.sleep(5)  # to see result in command window before it disappears!

如果有人能告诉我我可能会出问题的地方,我将不胜感激。


问题答案:

Python 3字符串是unicode,因此必须将其编码为字节以进行比较。试试这个测试

if msvcrt.kbhit() and msvcrt.getch() == chr(27).encode():
    aborted = True
    break

还是这个测试:

if msvcrt.kbhit() and msvcrt.getch().decode() == chr(27):
    aborted = True
    break

还是这个测试:

if msvcrt.kbhit() and ord(msvcrt.getch()) == 27:
    aborted = True
    break


 类似资料:
  • 问题内容: 我正在用python开发一个秒表类型的程序,我想知道如何检测是否按下了一个键(例如p表示暂停,s表示停止),而我不希望它像raw_input这样等待用户输入,然后继续执行。有人知道如何在while循环中执行此操作吗? 另外,我想做这个跨平台的,但是如果那不可能,那么我的主要开发目标是linux 问题答案: 对于那些在窗户上努力寻找可行答案的人,我的是:pynput 上面的功能将打印你按

  • 问题内容: 我正在尝试使用win32api通过特定的按键来打破Python中的循环。怎么会这样呢? 在以下代码中, win32api.KeyPress(’H’) 的实际版本是什么? 修订: 我希望能够通过按 h 键来中断循环。 编辑: 我正在尝试制作一个反复报告鼠标位置的程序,并且需要一种退出该程序的机制。 请参阅修订的代码。 问题答案: 只是底层Windows低层库的接口。见功能: 确定在调用函

  • 问题内容: 我需要知道现在正在按下哪个键。我不是要捕获一些特定的键来触发事件或类似的事情, 我想知道现在按下了哪些键并显示它们的列表。 我还需要捕获特殊键,例如F1 … F12,Shift,Alt,Home,Windows等。基本上,键盘上的所有键都是如此。 我该如何在python中做到这一点?如何捕获键盘事件? 编辑 就是这样,您知道我不是要创建键盘记录程序。我正在尝试做一个诊断工具(我在笔记本

  • 我正在开发一个Atom软件包,当我按下Ctrl-Shift-Up时,会执行某些命令。 当我第一次按Ctrl-Shift-Up时,Atom进入了一种“模式”,在这种模式下,情况会发生不同的变化。现在,我想我知道该怎么做了。但我不知道如何让atom劫持逃生钥匙。

  • 问题内容: 当我在Turtle图形中运行无限循环绘图时单击X(关闭)按钮时,会出现一些错误消息。 这是一个例子: 当我关闭窗口时,将显示以下错误消息。 我想知道如何避免此类错误消息。 有什么方法可以将tkinter模块中Tk类的“协议”方法与“ WM_DELETE_WINDOW”选项一起使用? 问题答案: 是的,确实可以通过注册一个函数(我称它为,但是您可以选择任何函数名)来拦截窗口关闭事件,从而

  • 问题内容: 我是Java的初学者,一直在研究如何检测用户是否按下了某个键(例如箭头键)。显然,有很多方法可以做到这一点,我发现此方法应该对我有用: 问题是我不知道什么是KeyEvent。 当我调用该方法并给我举个例子时,谁能告诉我在括号中加什么? PS:不要把我发送到其他站点,我可能已经看过了,他们只是让我更加困惑… 问题答案: public class KeyEvent extends Inpu