python获取手机通知栏消息_Python编写简单的通知栏脚本启动工具

随着自己编写的脚本与安装的工具越来越多,电脑的桌面和文件夹也越来越乱了。

就在前几天因为一个不小心,我把自己的一个项目给删了,所以决定将电脑整理一下。

不过这一整理我很多脚本和工具的位置我就忘记了,所以决定写个小工具来快速启动一些常用的脚本或工具

这里选择Python是因为Python跨平台,这样我的Linux电脑也可以用了,而且简单。

注意:教程使用python3与PyQt5来编写

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

0e7be22577ca

0e7be22577ca

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

效果:

0e7be22577ca

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

#省略.....

#省略.....

效果:

0e7be22577ca

好了教程就到这里如果你是想开机自启的话可以将main.pyw创建快捷方式放入启动文件夹中

比如Windows10位置一般在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

完整代码在链接: https://pan.baidu.com/s/1mjBbpnM 密码: x6dr

关于截图可以参考:windows下实现快捷键截图小工具

顺便推荐另外一篇文章:windows 测试服务管理工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 发送邮件昵称_利用JavaMail发送QQ邮件

一、RFC882文档简单说明RFC882文档规定了如何编写一封简单的邮件(纯文本邮件)&#xff0c;一封简单的邮件包含邮件头和邮件体两个部分&#xff0c;邮件头和邮件体之间使用空行分隔。邮件头包含的内容有&#xff1a;from字段   --用于指明发件人to字段    --用于指明收件…

java 访问控制权限_Java访问控制权限有哪些?区别是什么?

原标题&#xff1a;Java访问控制权限有哪些&#xff1f;区别是什么?Java中的类和方法等都是有访问控制权限的&#xff0c;用来控制方法、类、属性等的生效范围&#xff0c;Java有四种访问控制权限&#xff0c;其中比较常用的就是public和private&#xff0c;今天华清远见Java学…

java 规格overview_《Java數據結構和算法》- OverView

Q: 不同數據結構的優缺點&#xff1f;數據結構優點缺點數組(Array)快速訪問&#xff0c;如果知道下標&#xff0c;就可以非常快地存取查找慢&#xff0c; 插入或刪除慢&#xff0c; 大小固定有序數組(OrderedArray)比無序的數組查找快插入或刪除慢&#xff0c;大小固定棧(Stack…

mysql 集群怎么卸载节点_Greenplum移除节点

基于某某原因&#xff0c;我们的Greenplum需要卸载一个节点(测试环境的Greenplum集群)&#xff0c;由于该集群使用了很久&#xff0c;里面有许多开发所需要的数据&#xff0c;所以在卸掉一个节点后&#xff0c;还要保证数据不会丢失。当然&#xff0c;期间也遇到了点问题&#…

python中不论类的名字是什么歌_Python自动猜歌名,还愁排名上不去嘛?

前言相传&#xff0c;就在前几日&#xff0c;在网上闲逛时&#xff0c;刷到了一个猜歌的小程序。这个小程序通过播放歌曲部分片段&#xff0c;然后让用户来猜它的歌名&#xff0c;大概是这样的&#xff1a;作为一个脑热的听歌爱好者&#xff0c;于是他越陷越深&#xff0c;越刷…

trace java_使用java动态字节码技术简单实现arthas的trace功能。

参考资料用过[Arthas]的都知道&#xff0c;Arthas是alibaba开源的一个非常强大的Java诊断工具。不管是线上还是线下&#xff0c;我们都可以用Arthas分析程序的线程状态、查看jvm的实时运行状态、打印方法的出入参和返回类型、收集方法中每个代码块耗时&#xff0c;甚至可以监控…

打印狗的健康值Java_嵌入式狗的JAVA之路 HTML 补课

学了JAVA WEB应用&#xff0c;补充一下HTML的标签&#xff0c;常用的&#xff0c;不然页面都画不出来了~~test 标题&#xff0c;h1h2h3 3个字号test 段落link 链接 使用 Target 属性&#xff0c;你可以定义被链接的文档在何处显示。下面的这行会在新窗口打开文档&#xff1a;Vi…

python 角度传感器模拟_python树莓派红外反射传感器

本文实例为大家分享了python树莓派红外反射传感器的程序&#xff0c;供大家参考&#xff0c;具体内容如下1、工具rpi3&#xff0c;微雪ARPI600&#xff0c;Infrared Reflective Sensor2、基本原理Infrared Reflective Sensor 输出数字和模拟信号模拟信号通过ARPI600上的AD转换芯…

java构造方法赋值内存图_java 面向对象(九):类的结构:构造器(一)简介;属性赋值顺序;JavaBean的概念...

1.构造器(或构造方法)&#xff1a;Constructor构造器的作用&#xff1a;* 1.创建对象* 2.初始化对象的信息2.使用说明&#xff1a;* 1.如果没显式的定义类的构造器的话&#xff0c;则系统默认提供一个空参的构造器* 2.定义构造器的格式&#xff1a;权限修饰符 类名(形参列表){}…

java 集合modcount_源码|jdk源码之LinkedList与modCount字段

链表是对上一篇博文所说的顺序表的一种实现。与ArrayList思路截然不同&#xff0c;链表的实现思路是&#xff1a;不同元素实际上是存储在离散的内存空间中的。每一个元素都有一个指针指向下一个元素&#xff0c;这样整个离散的空间就被“串”成了一个有顺序的表。从链表的概念来…

idea 新建ssm java ee_IDEA搭建SSM项目实现增删改查

首先打开IDEA&#xff0c;File—>New—>Project创建项目选择左侧导航栏里的Maven&#xff0c;勾上勾&#xff0c;选择webapp按如下图进行填写创建完成后进入项目&#xff0c;右下角弹出的提示点击右边的Enable Auto-Import&#xff0c;自动配置连接数据库&#xff0c;我用…

php mail centos_centos怎么发送邮件

一、安装sendmail与mail1、安装sendmail&#xff1a;1) centos下可以安装命令&#xff1a;yum -y install sendmail2) 安装完后启动sendmail命令&#xff1a;service sendmail start2、安装mail安装命令&#xff1a;yum install -y mailx二、发送邮件1、通过文件内容发送发送命…

php文件的作用,php入口文件的作用-PHP问题

php入口文件的作用php入口文件能够完成主动加载性能。解析PHP入口文件的主动加载性能php的主动加载&#xff1a;正在php5之前&#xff0c;咱们要用某个类或类的办法&#xff0c;那必需include或许require&#xff0c;之后能力应用&#xff0c;每一次用一个类&#xff0c;都需求…

java中随机数边界问题,java 简单Dice问题(随机数的运用)

[java]代码库/*** Dice Write a program that simulates rolling two dice using the following* steps: 1. Prompt the user for the number of sides for two dice. 2. “Roll” the* dice three times by generating a random number between 1 (inclusive) and the* number…

java单词测试,java单词 - 在线打字测试(dazi.kukuw.com)

java单词贡献者&#xff1a;15533470608类别&#xff1a;英文 时间&#xff1a;2018-08-04 22:32:16 收藏数&#xff1a;20 评分&#xff1a;0返回上页举报此文章请选择举报理由&#xff1a;广告/谣言/欺诈政治敏感色情/违法信息垃圾文章其他收藏到我的文章改错字public static…

java vector list,Java基础之:List——ArrayList Vector

Java基础之&#xff1a;List——ArrayList & VectorArrayList简单介绍ArrayList实现了List接口&#xff0c;底层是一个数组&#xff0c;并实现了可变的功能。底层属性(transient Object[] elementData;)在序列化时&#xff0c;忽略该属性。ArrayList实现了List接口&#xf…

钉钉 php 推送,微信模板推送,钉钉信息推送

上午的时候看到有朋友需要微信推送&#xff0c;正好我也需要&#xff0c;之前一直用 Server 酱的&#xff0c;但是最近用不了&#xff0c;想找一个替代品&#xff0c;一开始准备选择钉钉&#xff0c;除了打卡&#xff0c;我很少使用钉钉&#xff0c;邮件提醒是备用方案&#xf…

涡轮机叶片matlab强度分析论文,一种基于MATLAB及Pro_E的涡轮建模方法

自动化与控制与二一种基于&#xff2d;&#xff21;&#xff34;&#xff2c;&#xff21;&#xff22;及&#xff30;&#xff52;&#xff4f;&#xff0f;&#xff25;的涡轮建模方法王智明(中海油服油田技术事业部北京&#xff11;&#xff10;&#xff11;&#xff11;&am…

php按文章评论数排序,zblog获取分类文章排序按指定的时间排序、评论数量排序、浏览数量排序...

Zblog PHP在1.8版本的时候想要调用多个分类的文章&#xff0c;并且按照自己的需求去排序是很简单的事情&#xff0c;很多博友也利用这个方法进行最新文章排行、热门评论文章排行等等操作&#xff0c;现在随着ZblogPHP版本的升级&#xff0c;已经封装了数据库语句&#xff0c;导…

蚁群算法matlab vrp问题车辆限重,蚁群算法MATLAB解VRP问题

Excel exp12_3_2.xls内容&#xff1a;ANT_VRP函数&#xff1a;function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]ANT_VRP(D,Demand,Cap,iter_max,m,Alpha,Beta,Rho,Q)%% R_best 各代最佳路线%% L_best 各代最佳路线的长度%% L_ave 各代平均距离%% Shortest_Rout…