Python中使用PyQt5创建的窗口添加全局快捷键(鼠标离开窗口时也可执行)

Python中使用PyQt5创建的窗口添加全局快捷键

使用第三方库SystemHotKey来实现全局快捷键

  1. 库的安装
pip3 install system_hotkey
  1. 官方案例
from system_hotkey import SystemHotkey
hk = SystemHotkey()
hk.register(('control', 'shift', 'h'), callback=lambda x: print("Easy!"))

简单思路

  1. 准备一个PyQt信号,和一个热键信号
sig_hk = pyqtSignal(str)
self.hk_test = SystemHotkey()
  1. 绑定热键信号到PyQt信号
self.hk_test.register(('control','6'),callback=lambda x:self.sendkeyevent("control+6"))
def sendkeyevent(self,i_str):
    self.sigkeyhot.emit(i_str)
  1. 绑定PyQt信号和PyQt槽
self.sigkeyhot.connect(self.KeypressEvent)

完整案例

from system_hotkey import SystemHotkey
from PyQt5.QtWidgets import QApplication,QWidget,QDialog
from PyQt5.QtCore import QObject,pyqtSignal

class c_demo(QWidget,QObject):
    #定义一个热键信号
    sigkeyhot = pyqtSignal(str)
    def __init__(self,From):
        #1. 简单的绘制一个窗口
        super().__init__(From)
        From.resize(100,150)
        #2. 设置我们的自定义热键响应函数
        self.sigkeyhot.connect(self.KeypressEvent)
        #3. 初始化两个热键
        self.hk_start,self.hk_stop = SystemHotkey(),SystemHotkey()
        #4. 绑定快捷键和对应的信号发送函数
        self.hk_start.register(('control','6'),callback=lambda x:self.sendkeyevent("control+6"))
        self.hk_stop.register(('control', '8'), callback=lambda x: self.sendkeyevent("control+8"))


    #热键处理函数
    def KeypressEvent(self,i_str):
        print("按下的按键是%s" % (i_str,))
        
    #热键信号发送函数(将外部信号,转化成qt信号)
    def sendkeyevent(self,i_str):
        self.sigkeyhot.emit(i_str)

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    Dialog_main = QDialog()
    ui = c_demo(Dialog_main)
    Dialog_main.show()
    sys.exit(app.exec_())

运行结果

  1. 在Python中右键,点击Run
    在这里插入图片描述

  2. 在键盘上按住control+6,结果显示
    在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值