Python编写简单的通知栏脚本启动工具

简介: 随着自己编写的脚本与安装的工具越来越多,电脑的桌面和文件夹也越来越乱了。就在前几天因为一个不小心,我把自己的一个项目给删了,所以决定将电脑整理一下。不过这一整理我很多脚本和工具的位置我就忘记了,所以决定写个小工具来快速启动一些常用的脚本或工具这里选择Python是因为Python跨平台,这样我的Linux电脑也可以用了,而且简单。

随着自己编写的脚本与安装的工具越来越多,电脑的桌面和文件夹也越来越乱了。
就在前几天因为一个不小心,我把自己的一个项目给删了,所以决定将电脑整理一下。
不过这一整理我很多脚本和工具的位置我就忘记了,所以决定写个小工具来快速启动一些常用的脚本或工具
这里选择Python是因为Python跨平台,这样我的Linux电脑也可以用了,而且简单。

注意:教程使用python3PyQt5来编写
如果你用的是Python2.7可以借鉴本教程使用PyQt4来编写

img_213d26a8ad69ea2c943e439110098ed3.gif
img_af5a9a16ea8c6286825353608b778294.gif

1.准备

首先

安装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 sys


class 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_())

效果:


img_77796447d497e35b11bebec2ee764a31.gif

 
 

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

##############
## conf.pyw ##
##############
import os
import time

def 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,QApplication
from PyQt5.QtGui import QIcon
import sys
import conf#<====导入conf

class 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 conf


class 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()
   #省略.....
 #省略.....

效果:


img_33c57ff576a95215b48c7cfa63b7ae91.gif

好了教程就到这里如果你是想开机自启的话可以将main.pyw创建快捷方式放入启动文件夹中
比如Windows10位置一般在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
完整代码在链接: https://pan.baidu.com/s/1mjBbpnM 密码: x6dr
关于截图可以参考:windows下实现快捷键截图小工具

相关文章
|
27天前
|
Linux Shell Python
Linux执行Python脚本
Linux执行Python脚本
27 1
|
7天前
|
机器学习/深度学习 数据挖掘 计算机视觉
python数据分析工具SciPy
【4月更文挑战第15天】SciPy是Python的开源库,用于数学、科学和工程计算,基于NumPy扩展了优化、线性代数、积分、插值、特殊函数、信号处理、图像处理和常微分方程求解等功能。它包含优化、线性代数、积分、信号和图像处理等多个模块。通过SciPy,可以方便地执行各种科学计算任务。例如,计算高斯分布的PDF,需要结合NumPy使用。要安装SciPy,可以使用`pip install scipy`命令。这个库极大地丰富了Python在科学计算领域的应用。
12 1
|
8天前
|
数据可视化 数据挖掘 Python
Python中数据分析工具Matplotlib
【4月更文挑战第14天】Matplotlib是Python的数据可视化库,能生成多种图表,如折线图、柱状图等。以下是一个绘制简单折线图的代码示例: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.figure() plt.plot(x, y) plt.title(&#39;简单折线图&#39;) plt.xlabel(&#39;X轴&#39;) plt.ylabel(&#39;Y轴&#39;) plt.show() ```
12 1
|
8天前
|
数据采集 SQL 数据可视化
Python数据分析工具Pandas
【4月更文挑战第14天】Pandas是Python的数据分析库,提供Series和DataFrame数据结构,用于高效处理标记数据。它支持从多种数据源加载数据,包括CSV、Excel和SQL。功能包括数据清洗(处理缺失值、异常值)、数据操作(切片、过滤、分组)、时间序列分析及与Matplotlib等库集成进行数据可视化。其高性能底层基于NumPy,适合大型数据集处理。通过加载数据、清洗、分析和可视化,Pandas简化了数据分析流程。广泛的学习资源使其成为数据分析初学者的理想选择。
13 1
|
14天前
|
测试技术 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,用于修改函数或方法的行为。本文将深入探讨Python中装饰器的概念、用法和实际应用,以及如何利用装饰器实现代码的优雅和高效。
|
16天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
【4月更文挑战第9天】本文探讨了Python在自动化测试中的应用,强调其作为热门选择的原因。Python拥有丰富的测试框架(如unittest、pytest、nose)以支持自动化测试,简化测试用例的编写与维护。示例展示了使用unittest进行单元测试的基本步骤。此外,Python还适用于集成测试、系统测试等,提供模拟外部系统行为的工具。在脚本编写实践中,Python的灵活语法和强大库(如os、shutil、sqlite3、json)助力执行复杂测试任务。同时,Python支持并发、分布式执行及与Jenkins、Travis CI等持续集成工具的集成,提升测试效率和质量。
|
23天前
|
存储 监控 异构计算
【Python】GPU内存监控脚本
【Python】GPU内存监控脚本
|
23天前
|
Ubuntu Unix Linux
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
|
1月前
|
数据采集 搜索推荐 数据挖掘
使用Python制作一个批量查询搜索排名的SEO免费工具
最近工作中需要用上 Google SEO(搜索引擎优化),有了解过的朋友们应该都知道SEO必不可少的工作之一就是查询关键词的搜索排名。关键词少的时候可以一个一个去查没什么问题,但是到了后期,一个网站都有几百上千的关键词,你再去一个一个查,至少要花费数小时的时间。 虽然市面上有很多SEO免费或者收费工具,但免费的基本都不能批量查,网上免费的最多也就只能10个10个查询,而且查询速度很慢。收费的工具如Ahrefs、SEMrush等以月为单位收费最低也都要上百美刀/月,当然如果觉得价格合适也可以进行购买,毕竟这些工具的很多功能都很实用。今天我给大家分享的这个排名搜索工具基于python实现,当然肯定
40 0
|
1月前
|
XML Shell Linux
性能工具之 JMeter 使用 Python 脚本快速执行
性能工具之 JMeter 使用 Python 脚本快速执行
41 1
性能工具之 JMeter 使用 Python 脚本快速执行