利用利用pyqt5实现常驻实现常驻Windows系统托盘并利用全局热键唤出的系统托盘并利用全局热键唤出的
程序程序
最近利用最近利用pyqt5写了一个小工具,想像微信一样可以在系统托盘驻留,并具备全局热键唤出、写了一个小工具,想像微信一样可以在系统托盘驻留,并具备全局热键唤出、ESC键隐藏等功能,下面利用一键隐藏等功能,下面利用一
个简单的个简单的UI界面来记录一下实现的过程界面来记录一下实现的过程
基本思路基本思路
利用QtDesigner制作UI界面;
QSystemTrayIcon制作托盘程序;
system_hotkey是一个全局热键库,可以自定义热键;
重写Event,增加ESC退出功能、屏蔽UI最小化、关闭按钮的功能,目的是只允许程序通过托盘图标退出,防止误关闭。
制作制作UI界面界面
下面简单做一个UI:
托盘程序托盘程序
class Tray(QSystemTrayIcon):
def __init__(self,UI):
super(Tray,self).__init__()
self.ui = UI # 传入主程序
self.setIcon(QIcon('campaign.ico')) # 托盘图标
self.setToolTip('示例') # 鼠标点在图标上的时候显示的气泡提示
self.activated.connect(self.clickedIcon) # 点击信号
self.menu()
self.show()
def clickedIcon(self,reason):
# reason:鼠标点击托盘图标时传递的整数型信号,1表示单击右键,2表示双击左键,3表示单击左键,4表示点击中键。下面定义单击左键是弹出或隐藏
界面,单击右键是弹出菜单。
if reason == 3:
self.trayClickedEvent()
elif reason ==1:
self.contextMenu()
def menu(self):
menu = QMenu()
action = QAction('退出',self,triggered=self.triggered)
menu.addAction(action)
self.setContextMenu(menu)
# 单击托盘图标,程序在隐藏和显示之间来回切换
def trayClickedEvent(self):
if self.ui.isHidden():
self.ui.setHidden(False)
if self.ui.windowState() == QtCore.Qt.WindowMinimized:
self.ui.showNormal()
self.ui.raise_()
self.ui.activateWindow()
else:
self.ui.setHidden(True)
def triggered(self):
评论1