Python编写简单的通知栏脚本启动工具
发布日期:2021-09-06 21:40:31
浏览次数:7
分类:技术文章
本文共 4483 字,大约阅读时间需要 14 分钟。
随着自己编写的脚本与安装的工具越来越多,电脑的桌面和文件夹也越来越乱了。
就在前几天因为一个不小心,我把自己的一个项目给删了,所以决定将电脑整理一下。 不过这一整理我很多脚本和工具的位置我就忘记了,所以决定写个小工具来快速启动一些常用的脚本或工具 这里选择Python是因为Python跨平台,这样我的Linux电脑也可以用了,而且简单。注意:教程使用与来编写
如果你用的是Python2.7可以借鉴本教程使用来编写
1.准备
首先
安装PyQt5
pip3 install PyQt5
然后创建目录
新建一个文件夹用于存放项目
文件夹示例结构如下:/main #主文件夹 名字自定义├─main.pyw #主启动程序├─conf.py #用于自定义菜单配置├─/icons #用于存放图标 文件夹└─/scripts #用于存放脚本 文件夹 可以省略
.pyw后缀的文件是指窗体应用程序默认是Python环境变量目录下的pythonw.exe文件如果打开方式是控制台程序,需要手动指定打开方式
关于图标可以前往下载
2.代码
2.1.我们来创建个通知栏显示:
################ main.pyw ################from PyQt5.QtWidgets import QDialog, QSystemTrayIcon, QMenu ,QAction,QApplicationfrom PyQt5.QtGui import QIconimport 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, QListWidgetItemfrom PyQt5.QtGui import QIconimport sysimport 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() #省略..... #省略.....
效果:
好了教程就到这里如果你是想开机自启的话可以将main.pyw创建快捷方式放入启动文件夹中
比如Windows10位置一般在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
完整代码在链接: 密码: x6dr 关于截图可以参考:
转载地址:https://blog.csdn.net/weixin_34273479/article/details/89612439 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月01日 01时53分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java图片加气泡文字_图片加气泡文字
2019-04-21
java总结i o流_14.java总结I/O流
2019-04-21
java和历转为西历_日期转西暦,和暦
2019-04-21
java 远程 yarn jar_再论Yarn Client和Yarn cluster
2019-04-21
java单元测试断言_单元测试+断言
2019-04-21
java 创建压缩包_用Java创建ZIP压缩文件
2019-04-21
java typedarray_TintTypedArray.java
2019-04-21
java字符字面量_java – 字符串字面量的行为是令人困惑的
2019-04-21
php判断数组的值是否为空,PHP判断数组是否为空的常用方法(五种方法)
2019-04-21
php 读数据库,PHP数据库
2019-04-21
PHP能不能下载报表,PHP生成Excel报表的方法
2019-04-21
php mht2html,PHP 处理 mht 文件
2019-04-21
rt2tr matlab,MATLAB机器人工具箱参考
2019-04-21
win iis对比apache php,服务器Apache与IIS的区别
2019-04-21
怎样用xampp测试php环境变量,使用xampp配置php运行环境的方法
2019-04-21
qq互联php教程,thinkphp5怎么整合qq互联登录教程
2019-04-21
mysql建立索引 性能测试_MySQL分区和索引性能测试
2019-04-21
数据结构java实验 刘小晶_数据结构实例解析与实验指导:Java语言描述
2019-04-21