如何让kbhit()在Spyder环境下工作
How to make kbhit() work in the Spyder environment
有没有人在 Windows 上找到在 Spyder 环境中模拟 kbhit()
的方法?不知何故,开发环境介于 Python 程序和键盘之间,因此任何简单的方法(即 msvcrt.kbhit()
)都不起作用。
在 Spyder 中设置此配置:
运行 > 运行 每个文件的配置 > 在外部系统终端中执行
根据我的经验"msvcrt.kbhit" 仅适用于 CMD。
msvcrt 在 Spyder 中不起作用的原因是 iPython 控制台嵌入在 Qt 小部件中(源代码 here) which handles keyboard input very differently than the CMD console。
Mehdi 的上述回答是最实用的解决方法。但是,也可以将 Spyder 连接到外部 IPython 控制台,该控制台 运行 在 CMD 终端内:
- 打开 CMD window
- 从 运行 宁
ipython kernel
开始 IPython。它应该打印类似
cmd> ipython kernel
NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.
To exit, you will have to explicitly quit this process, by either sending
"quit" from a client, or using Ctrl-\ in UNIX-like environments.
To read more about this, see https://github.com/ipython/ipython/issues/2049
To connect another client to this kernel, use:
--existing kernel-3436.json
- 打开 Spyder 并使用“控制台 > 连接到现有内核”连接到 IPython 内核。这将打开一个对话框,要求提供连接文件。
- 单击最右侧的“浏览”按钮,然后select“kernel-3436.json”(与IPython启动时打印的名称相同)。
- 如果代码如
import msvcrt
print('Press a key!')
key = msvcrt.getch()
print('You pressed:', key)
是来自Spyder的运行,输出将出现在Spyder的IPython终端。但是要提供输入,您必须将焦点设置到 CMD window.
甚至可以 运行 调试器,但对外部内核的支持似乎非常有限。没有 GUI 集成。相反,PDB 命令必须直接输入 Spyder IPython 终端。根据 2013 年的 this issue,这不太可能改变。
有没有人在 Windows 上找到在 Spyder 环境中模拟 kbhit()
的方法?不知何故,开发环境介于 Python 程序和键盘之间,因此任何简单的方法(即 msvcrt.kbhit()
)都不起作用。
在 Spyder 中设置此配置:
运行 > 运行 每个文件的配置 > 在外部系统终端中执行
根据我的经验"msvcrt.kbhit" 仅适用于 CMD。
msvcrt 在 Spyder 中不起作用的原因是 iPython 控制台嵌入在 Qt 小部件中(源代码 here) which handles keyboard input very differently than the CMD console。
Mehdi 的上述回答是最实用的解决方法。但是,也可以将 Spyder 连接到外部 IPython 控制台,该控制台 运行 在 CMD 终端内:
- 打开 CMD window
- 从 运行 宁
ipython kernel
开始 IPython。它应该打印类似
cmd> ipython kernel
NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.
To exit, you will have to explicitly quit this process, by either sending
"quit" from a client, or using Ctrl-\ in UNIX-like environments.
To read more about this, see https://github.com/ipython/ipython/issues/2049
To connect another client to this kernel, use:
--existing kernel-3436.json
- 打开 Spyder 并使用“控制台 > 连接到现有内核”连接到 IPython 内核。这将打开一个对话框,要求提供连接文件。
- 单击最右侧的“浏览”按钮,然后select“kernel-3436.json”(与IPython启动时打印的名称相同)。
- 如果代码如
import msvcrt
print('Press a key!')
key = msvcrt.getch()
print('You pressed:', key)
是来自Spyder的运行,输出将出现在Spyder的IPython终端。但是要提供输入,您必须将焦点设置到 CMD window.
甚至可以 运行 调试器,但对外部内核的支持似乎非常有限。没有 GUI 集成。相反,PDB 命令必须直接输入 Spyder IPython 终端。根据 2013 年的 this issue,这不太可能改变。