具体功能:按下 alt+~ 唤出和最小化主窗口
监听 键盘事件的代码(hotKey.py):
import win32con
from ctypes import *
from ctypes.wintypes import *
from mainwindow import QMThread
from PyQt5.QtCore import pyqtSignal
main_key = 192
# 这里的 QMThread 为自定义的 QThread
class HotKey(QMThread):
"""全局热键监听"""
ShowWindow = pyqtSignal(int)
def __init__(self):
super(HotKey, self).__init__()
self.main_key = 192
def run(self):
""" 监听 windows 快捷键使用 """
user32 = windll.user32
while True:
if not user32.RegisterHotKey(None, 1, win32con.MOD_ALT, self.main_key): # alt+~
print('Unable to register id', self.key_num, self.key_num % 2)
try:
msg = MSG()
if user32.GetMessageA(byref(msg), None, 0, 0) != 0:
print('2222222', msg.message, win32con.WM_HOTKEY)
if msg.message == win32con.WM_HOTKEY:
if msg.wParam == win32con.MOD_ALT:
self.ShowWindow.emit(msg.lParam)
finally:
print('finish')
主窗口 代码(mainwindow.py):
import sys, os
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import hotKey
class UUMainWindow(QWidget):
"""主窗口页面"""
ShowWindow = pyqtSignal(int)
def __init__(self, parent=None):
super(UUMainWindow, self).__init__(parent)
self.setWindowTitle('主页面')
self.setGeometry(300, 100, 1300, 800)
def hot_key_event(self, data):
"""热键处理函数"""
if data == 12582913:
if self.isMinimized(): # 判断窗口是否为最小化
self.showNormal() # 如果为最小化, 则恢复正常
else:
self.showMinimized() # 将窗口设置为最小化
if __name__ == '__main__':
app = QApplication(sys.argv)
main = UUMainWindow()
hot_key = hotKey.HotKey()
hot_key.ShowWindow.connect(main.hot_key_event)
hot_key.start() # 开启热键监听的线程
main.show()
sys.exit(app.exec_())
按下 alt+~ 就能 快捷的唤出 隐藏窗口了