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下实现快捷键截图小工具

相关文章
|
2月前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
103 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
9天前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
40 7
|
17天前
|
数据采集 数据可视化 大数据
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
55 6
|
3月前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
143 61
Python装饰器实战:打造高效性能计时工具
|
26天前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
4月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
378 61
|
2月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
85 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
2月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
90 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
5月前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
3月前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
142 37
Python时间序列分析工具Aeon使用指南

热门文章

最新文章