这次给大家带来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() #省略.....
#省略.....
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
相关阅读:
如何使用canvas来制作好用的涂鸦画板
如何使用s-xlsx之合并单元格
以上就是python编写的通知栏脚本启动工具的详细内容。
