在某些时候需要为自己的软件增加全局键盘监听,比如软件最小化隐藏后可以通过热键唤醒,又或者比如像 QQ 一样可以全局热键截图。这里介绍几个方法实现在 PyQt 中使用 Python 全局钩子模块实现全局热键功能。

  1. pyHook3

安装命令 : pip install pyhook3

https://blog.csdn.net/q871063970/article/details/86648386

似乎将 pyhook 支持 py3 版本的了?没有太多研究.

缺点:只支持 win 平台.

2. keyboard & mouse

安装命令: pip install keyboard mouse


from PyQt5 import  QtGui, QtWidgets, QtCore
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import keyboard
class Window(QWidget):

    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        layout = QVBoxLayout(self)
        self.testBtn = QPushButton(self)
        layout.addWidget(self.testBtn)

        keyboard.add_hotkey('ctrl+shift+x', lambda:print('triggered', 'hotkey'))
        keyboard.add_hotkey('ctrl+shift+c', self.abc,args=('aa',"bb","cc"))

    def abc(self,a,b,c):
        print(a,b,c)
        
if __name__ == '__main__':
    import sys
    from PyQt5.QtWidgets import QApplication
    app = QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())

更详细例子 : pyqt 中使用 keyboard 全局热键

优点:跨平台;

缺点:模块名字取得太差,不容易被发现.