我正在为游戏制作一个机器人,我想在按下热键时调用该函数。我已经尝试了一些解决方案,但效果不佳。这是我的代码:
def start():
while True:
if keyboard.is_pressed('alt+s'):
break
...
def main():
while True:
if keyboard.is_pressed('alt+p'):
start()
这种方式很稳定,但会导致滞后,我很难输入一些东西。
def main():
keyboard.add_hotkey('alt+p', start, args=(), suppress=True, trigger_on_release=True)
while True:
# waiting for the user to press hotkey
continue
据我所知,keyboard.add_hotkey 只返回输出,所以我无法在开始时停止循环函数。
有没有更好的解决方案?
可以使用
keyboard
库在 Python 中添加热键。但是,遇到的问题是由于在主循环中不断轮询按键按下事件导致的。这会导致滞后,因为它会消耗大量 CPU 资源。
一种更好的方法是使用
keyboard.wait
函数,该函数在按下指定键之前会阻塞脚本的执行。以下是如何使用它的示例:
import keyboard
def start():
print("热键已按下!")
# 在此处添加想在按下热键时运行的代码
keyboard.add_hotkey('alt+s', start)
print("按下 alt+s 以触发热键...")
keyboard.wait('esc') # 等待按下 'esc' 键以退出脚本
在此代码中:
-
我们导入
keyboard
库。 -
我们定义了一个名为
start
的函数,该函数将在按下热键时被调用。 -
我们使用
keyboard.add_hotkey('alt+s', start)
将alt+s
热键与start
函数相关联。 - 我们打印一条消息,通知用户如何触发热键。
-
我们使用
keyboard.wait('esc')
等待用户按下esc
键。这将阻止脚本的执行,直到按下该键为止。
此方法避免了不断轮询按键按下事件,从而提供了一种更有效且响应更快的解决方案。
其他提示:
-
可以使用
keyboard.add_hotkey
函数添加多个热键。 -
可以使用
keyboard.remove_hotkey
函数删除热键。 -
可以在
keyboard.wait
函数中指定多个键,例如keyboard.wait('ctrl+c', 'ctrl+d')
。
希望这可以帮助到!
标签:python,keyboard,hotkeys From: 72221497