【发布时间】:2021-12-20 18:45:18
【问题描述】:
如果按下 Ctrl 键,我希望我的配置菜单在脚本开始时打开。也就是说,用户将在脚本开始运行之前开始按键。
拦截我试过keyboard.is_pressed('ctrl'),但总是返回false。
我也尝试过keyboard.read_key,但这种方法给我带来了两个问题:
如果未按下,则程序不会继续运行。
如果按下它,只有当我松开控制键时它才会继续运行。
也许我只需要考虑另一种打开此菜单的方法。
【问题讨论】:
如果按下 Ctrl 键,我希望我的配置菜单在脚本开始时打开。也就是说,用户将在脚本开始运行之前开始按键。
拦截我试过keyboard.is_pressed('ctrl'),但总是返回false。
我也尝试过keyboard.read_key,但这种方法给我带来了两个问题:
如果未按下,则程序不会继续运行。
如果按下它,只有当我松开控制键时它才会继续运行。
也许我只需要考虑另一种打开此菜单的方法。
【问题讨论】:
我假设您为此使用 keyboard 模块。查看代码,该库似乎是基于事件的,因此如果在程序启动之前按下 CTRL 键,则程序无法识别它。
我的建议是使用 sys 库直接从标准输入读取。但是,查看How to get Ctrl, Shift or Alt with getch() ncurses?,似乎 CTRL、ALT 和 SHIFT 不会生成自己的标准输入输入,而是修改现有输入,因此您可能应该考虑使用另一个键作为修饰符。您还需要一个超时,Read file with timeout in Python 建议选择模块提供。如果您还不知道,sys.stdin 是您的标准输入,您可以像对待任何其他文件一样对待它。
【讨论】:
假设我的代码将在 Windows 上运行,并且由于我在 C++ 方面的经验,我想出了win32api 模块。
# Windows module to controll the keyboard
import win32api
# Windows module with every key code
import win32con
# Check whether the control key is pressed
if win32api.GetAsyncKeyState(win32con.VK_CONTROL) & 0x8000 > 0:
# Do stuff
【讨论】: