视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python编写的通知栏脚本启动工具
2020-11-27 20:01:15 责编:小采
文档
 这次给大家带来Python编写的通知栏脚本启动工具,Python编写通知栏脚本启动工具的注意事项有哪些,下面就是实战案例,一起来看一下。

首先

安装PyQt5

pip3 install PyQt5

然后创建目录

新建一个文件夹用于存放项目
文件夹示例结构如下:

/main #主文件夹 名字自定义├─main.pyw #主启动程序├─conf.py #用于自定义菜单配置├─/icons #用于存放图标 文件夹└─/scripts #用于存放脚本 文件夹 可以省略

.pyw后缀的文件是指窗体应用程序默认是Python环境变量目录下的pythonw.exe文件如果打开方式是控制台程序,需要手动指定打开方式

关于图标可以前往http://www.iconfont.cn/下载

2.代码

2.1.我们来创建个通知栏显示:

################ main.pyw ################from PyQt5.QtWidgets import QDialog, QSystemTrayIcon, QMenu ,QAction,QApplication
from PyQt5.QtGui import QIcon
import sysclass main(QDialog):
 def init(self): super().init() self.loadMenu() self.initUI() def loadMenu(self):
 menuItems = [] # 菜单列表
 menuItems.append({"text": "启动", "icon": "./icons/set.png", "event": self.show, "hot": "D"})
 menuItems.append({"text": "退出", "icon": "./icons/close.png", "event": self.close, "hot": "Q"}) self.trayIconMenu = QMenu(self)# 创建菜单
 #遍历绑定 显示的文字、图标、热键和点击事件
 #热键可能是无效的 我这里只是为了显示效果而已
 for i in menuItems: 
 tmp = QAction(QIcon(i["icon"]), i["text"],self, triggered=i["event"])
 tmp.setShortcut(self.tr(i["hot"])) self.trayIconMenu.addAction(tmp) 
 def initUI(self): self.trayIcon = QSystemTrayIcon(self) # <===创建通知栏托盘图标
 self.trayIcon.setIcon(QIcon("./icons/menu2.png"))#<===设置托盘图标
 self.trayIcon.setContextMenu(self.trayIconMenu)#<===创建右键连接菜单
 self.trayIcon.show()#<====显示托盘
 self.setWindowIcon(QIcon("./icons/menu2.png")) #<===设置窗体图标
 self.setGeometry(300, 300, 180, 300) # <===设置窗体打开位置与宽高
 self.setWindowTitle('窗体标题') # self.show()#<====显示窗体
 # self.hide()#<====隐藏窗体
 # 默认不显示窗体 
 # 重写窗体关闭事件,让其点击关闭时隐藏
 def closeEvent(self, event): if self.trayIcon.isVisible(): self.trayIcon.hide()if name == 'main':
 app = QApplication(sys.argv)
 ex = main()
 sys.exit(app.exec_())

效果:

2.2.如果通知栏显示成功后接下来的配置就十分简单了,只是绑定显示与事件就行了

################ conf.pyw ################import osimport timedef PrScrn():#调用 dll示例
 time.sleep(0.5)
 os.popen('rundll32 .\\script\\截图\\PrScrn.dll PrScrn')def Open360Wifi():#打开应用程序示例
 os.popen('"C:\\Program Files (x86)\\360\\360AP\\360AP.exe" /menufree')def OpenRegedit():#调用 命令示例
 os.popen('regedit')def Ifconfig():
 os.system('''ipconfig & pause''')
menuItems=[ #.....示例....
 {"text":"截图","icon":"./icons/cut.png","event":PrScrn,"hot":"Alt+P"},
 {"text":"360Wifi","icon":"./icons/wifi.png","event":Open360Wifi,"hot":"Alt+W"},
 {"text":"注册表","icon":"./icons/regedit.png","event":OpenRegedit,"hot":"Alt+R"},
 {"text":"ifconfig","icon":"./icons/ip.png","event":Ifconfig,"hot":"Alt+R"}
]

2.3.读取配置并显示
读取十分简单:

from PyQt5.QtWidgets import QDialog, QSystemTrayIcon, QMenu ,QAction,QApplicationfrom PyQt5.QtGui import QIconimport sysimport conf#<====导入confclass main(QDialog):
 def init(self):
 super().init()
 self.loadMenu()
 self.initUI() def loadMenu(self):
 menuItems =conf.menuItems #<=====菜单列表
 #....略
 #....略if name == 'main':
 app = QApplication(sys.argv)
 ex = main()
 sys.exit(app.exec_())

2.4.将窗体利用起来
我这里就举个简单的例子:

from PyQt5.QtWidgets import QDialog, QAction, QApplication, QListWidget, QVBoxLayout, QSystemTrayIcon, QMenu, QListWidgetItem
from PyQt5.QtGui import QIcon
import sys
import confclass main(QDialog):
 def init(self): super().init() self.loadMenu() self.initUI() #省略.....
 def loadList(self):
 lv = QListWidget() for i in range(len(conf.menuItems)):
 itm = conf.menuItems[i] if not 'icon' in itm.keys():
 itm["icon"] = None if not 'event' in itm.keys():
 itm["event"] = self.show if not 'hot' in itm.keys():
 itm["hot"] = 'None' 
 qlv = QListWidgetItem(QIcon(itm["icon"]), self.tr(itm["text"]+" ("+itm["hot"]+")"))
 qlv.event = itm["event"] 
 # qlv.clicked.connect(self.close)
 lv.insertItem(i + 1, qlv)
 lv.itemDoubleClicked.connect(self.dbclickItem) self.layout.addWidget(lv) def dbclickItem(self, item):
 item.event() #省略.....
 #省略.....

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

相关阅读:

如何使用canvas来制作好用的涂鸦画板

如何使用s-xlsx之合并单元格

下载本文
显示全文
专题