210000 2023-08-28 18:17 采纳率: 66.7%
浏览 28
已结题

使用pynput的globalhotkeys时单个按键触发了组合键的函数

使用pynput的globalhotkeys时单个按键触发了组合键的函数

我写了一个python的快捷键脚本,使用到了pynput的globalhotkeys来添加多个组合键。当第一次使用组合键时可以触发指定的函数,但是之后仅仅只需要组合键中的一个键就可以触发这个函数。

from pynput import keyboard
import webbrowser

def openurl():
    webbrowser.open('https://google.com')

def esc():
    hotkey.stop()

with keyboard.GlobalHotKeys(
    {'<ctrl>+0': openurl,
     '<ctrl>+o': esc
     }
)as hotkey:
    hotkey.join()

比如:上面的代码实现了ctrl + 0的组合键打开谷歌的网站,如果刚运行,使用ctrl或者0是无法触发的,只有使用了组合键才可以启动。但是一旦启动了一次后,之后仅需要使用ctrl键就可以触发。

img

这个问题有时出现,有时又不出现,很奇怪。

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-08-29 16:20
    关注

    引用 皆我百晓生 小程序回复内容作答:
    这是因为在Windows系统中,HotKey实现有时会出现延迟或冲突的问题。可以尝试使用以下方法解决这个问题:

    1. 确保没有其他应用程序正在使用相同的热键,以避免冲突。
    2. 在注册热键之前,尝试在脚本的开头增加一些延迟时间,以确保程序运行时所有组件都已加载完毕。
      import time
      
      time.sleep(1)  # 延迟一秒钟,确保系统准备就绪
      
    3. 可以尝试使用其他热键库,如pynput.keyboard.Listener,它也可以注册全局快捷键。

    如果以上方法无法解决问题,可以考虑使用其他库或方法实现类似的功能。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月7日
  • 已采纳回答 8月30日
  • 修改了问题 8月28日
  • 创建了问题 8月28日

悬赏问题

  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥15 配置hadoop时start-all.sh老是启动失败
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题