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.pswp.cn/news/529401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529401.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java 圓 繼承_java 類的繼承(轉)

這個星期主要是學習了Java中類的繼承問題.繼承就是由已有的類創建新類,通過子類繼承父類的方法,實現一些功能.下面就是老師布置作業的其中一個:定義父類圓&#xff0c;通過繼承&#xff0c;獲得子類球、圓錐、圓柱&#xff0c;子類具有計算體積的功能。1)新建文件夾Test1&#…

java爬蟲 京東_Java爬蟲實現京東物流查詢

網上沒有免費的接口&#xff0c;只能自己寫一套了&#xff0c;參考代碼如下public static JSONObject getLastInfo(String no){JSONObject jsonObjectnew JSONObject();jsonObject.put("no", no);Connection connectionJsoup.connect("http://www.jdwl.com/orde…

java list stream avg_Java 8 Stream API中的多個聚合函數

要在沒有自定義收集器的情況下執行此操作(不再對結果進行流式傳輸),您可以這樣做.它有點臟,因為它首先收集到Map< String,List< TimePeriodCalc>>然后流式傳輸該列表并獲得平均加倍.由于你需要兩個平均值,它們被收集到一個Holder或一對,在這種情況下我使用的是Abst…

java 發送郵件昵稱_利用JavaMail發送QQ郵件

一、RFC882文檔簡單說明RFC882文檔規定了如何編寫一封簡單的郵件(純文本郵件)&#xff0c;一封簡單的郵件包含郵件頭和郵件體兩個部分&#xff0c;郵件頭和郵件體之間使用空行分隔。郵件頭包含的內容有&#xff1a;from字段   --用于指明發件人to字段    --用于指明收件…

java沒有timer類_Java中的Java.util.Timer類 - Break易站

scheduleAtFixedRate(TimerTask task, long delay, long period): java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period)在指定的延遲語法后開始&#xff0c;為重復的固定速率執行調度指定的任務&#xff1a;public void scheduleAtFixedRate(TimerT…

java select下拉標簽_java中下拉框select和單選按鈕的回顯操作

前提&#xff1a;1.下拉框select請選擇部門selected"selected">${department.department}2.單選按鈕radio的回顯checked"checked">checked"checked">補充知識&#xff1a;java使用apache commons-fileupload組件實現文件上傳(控制文件上…

java 訪問控制權限_Java訪問控制權限有哪些?區別是什么?

原標題&#xff1a;Java訪問控制權限有哪些&#xff1f;區別是什么?Java中的類和方法等都是有訪問控制權限的&#xff0c;用來控制方法、類、屬性等的生效范圍&#xff0c;Java有四種訪問控制權限&#xff0c;其中比較常用的就是public和private&#xff0c;今天華清遠見Java學…

java 操作cursor數據庫_Java連接各種數據庫以及調用存儲過程

準備工作&#xff1a;1. 創建表drop table T_TEST_PROCEDURE cascade constraints;/**//*Table: T_TEST_PROCEDURE*//**/createtable T_TEST_PROCEDURE (IDNUMBER(19) not null,NAMEVARCHAR2(40),AGE NUMBER(3),constraintPK_T_TEST_PROCEDURE primary key (ID));2. 創建存儲過…

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

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

mysql 集群怎么卸載節點_Greenplum移除節點

基于某某原因&#xff0c;我們的Greenplum需要卸載一個節點(測試環境的Greenplum集群)&#xff0c;由于該集群使用了很久&#xff0c;里面有許多開發所需要的數據&#xff0c;所以在卸掉一個節點后&#xff0c;還要保證數據不會丟失。當然&#xff0c;期間也遇到了點問題&#…

mysql2012更改表名_T-SQL入門攻略之13-修改數據表

--> Title : T-SQL入門攻略之13-修改數據表--> Author : wufeng4552--> Date : 2010-07-12修改表名與字段名—sp_rename--1修改表名SQL Server不直接提供修改表名的T-SQL語句&#xff0c;但是可以通過存儲過程實現語法格式&#xff1a;sp_rename tablename,newtabl…

python中不論類的名字是什么歌_Python自動猜歌名,還愁排名上不去嘛?

前言相傳&#xff0c;就在前幾日&#xff0c;在網上閑逛時&#xff0c;刷到了一個猜歌的小程序。這個小程序通過播放歌曲部分片段&#xff0c;然后讓用戶來猜它的歌名&#xff0c;大概是這樣的&#xff1a;作為一個腦熱的聽歌愛好者&#xff0c;于是他越陷越深&#xff0c;越刷…

java調用oracle存儲過程_做一點,記一點 ~ Java調用Oracle存儲過程

一、需求傳入一個參數&#xff0c;返回一條或多條記錄(列表)。二、實現步驟1. 編寫Oracle存儲過程。-- 聲明包和包體的語句應該分兩次執行&#xff0c;即使聲明在前定義在后&#xff0c;如果一起執行依然會編譯出錯--調用能夠返回多條記錄的存儲過程需要定義在包內--聲明包及包…

java 從控制臺讀取_轉載 java從控制臺讀取輸入的方法

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class MainClass { public static void method1() { //使用Scanner Scanner scannernew Sca…

trace java_使用java動態字節碼技術簡單實現arthas的trace功能。

參考資料用過[Arthas]的都知道&#xff0c;Arthas是alibaba開源的一個非常強大的Java診斷工具。不管是線上還是線下&#xff0c;我們都可以用Arthas分析程序的線程狀態、查看jvm的實時運行狀態、打印方法的出入參和返回類型、收集方法中每個代碼塊耗時&#xff0c;甚至可以監控…

順時針小球圓周運動Java編程_如何使用CSS實現圓周運動小球的實例

我們時常在頁面中見到一些動畫效果&#xff0c;這些動畫效果&#xff0c;很多可以僅通過CSS來實現。在這里我們用到了CSS3的animation屬性。animation 屬性是一個簡寫屬性&#xff0c;用于設置六個動畫屬性&#xff1a;animation-name 規定需要綁定到選擇器的 keyframe 名稱。a…

java swing 外觀框架_【GUI】一、Swing外觀框架BeautyEye使用

一、Swing外觀框架BeautyEye使用1.1 導包1.2 使用BeautyEye L&Fpublic static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {// 國人牛逼主題&#xff0c;值得學習// 初始化字體InitGlobalFont(new Font("微軟雅黑", F…

static詳解java_java中static作用詳解

static表示“全局”或者“靜態”的意思&#xff0c;用來修飾成員變量和成員方法&#xff0c;也可以形成靜態static代碼塊&#xff0c;但是Java語言中沒有全局變量的概念。被static修飾的成員變量和成員方法獨立于該類的任何對象。也就是說&#xff0c;它不依賴類特定的實例&…

java基礎案例教程前4章知識點_java學習記錄4 Java基礎知識點

java學習記錄4 Java基礎知識點1. 注釋單行注釋使用“//”開頭&#xff0c;后面是注釋的內容一般在要注釋的語句的上面加注釋多行注釋以“/*”開頭&#xff0c;以“*/”結尾可以做行內注釋不可嵌套使用文檔注釋以“/**”開頭&#xff0c;以“*/”結尾用來給類和方法做注釋&#…

打印狗的健康值Java_嵌入式狗的JAVA之路 HTML 補課

學了JAVA WEB應用&#xff0c;補充一下HTML的標簽&#xff0c;常用的&#xff0c;不然頁面都畫不出來了~~test 標題&#xff0c;h1h2h3 3個字號test 段落link 鏈接 使用 Target 屬性&#xff0c;你可以定義被鏈接的文檔在何處顯示。下面的這行會在新窗口打開文檔&#xff1a;Vi…