python實(shí)現(xiàn)桌面托盤氣泡提示
本文實(shí)例為大家分享了python實(shí)現(xiàn)桌面托盤氣泡提示的具體代碼,供大家參考,具體內(nèi)容如下
# -*- encoding:utf-8 -*- ############################## # # 程序名:python桌面托盤氣泡 # 文件名:clsBubble.py # 功能 :實(shí)現(xiàn)桌面托盤氣泡提示功能 # modify:by adengou 2016.1.4 # program:python3.4.4 # 適用 :windowsXP -windows10 # ############################## import sys import os import struct import time import win32con from win32api import * # Try and use XP features, so we get alpha-blending etc. try: from winxpgui import * except ImportError: from win32gui import * class PyNOTIFYICONDATA: _struct_format = ( "I" # DWORD cbSize; 結(jié)構(gòu)大小(字節(jié)) "I" # HWND hWnd; 處理消息的窗口的句柄 "I" # UINT uID; 唯一的標(biāo)識(shí)符 "I" # UINT uFlags; "I" # UINT uCallbackMessage; 處理消息的窗口接收的消息 "I" # HICON hIcon; 托盤圖標(biāo)句柄 "128s" # TCHAR szTip[128]; 提示文本 "I" # DWORD dwState; 托盤圖標(biāo)狀態(tài) "I" # DWORD dwStateMask; 狀態(tài)掩碼 "256s" # TCHAR szInfo[256]; 氣泡提示文本 "I" # union { # UINT uTimeout; 氣球提示消失時(shí)間(毫秒) # UINT uVersion; 版本(0 for V4, 3 for V5) # } DUMMYUNIONNAME; "64s" # TCHAR szInfoTitle[64]; 氣球提示標(biāo)題 "I" # DWORD dwInfoFlags; 氣球提示圖標(biāo) ) _struct = struct.Struct(_struct_format) hWnd = 0 uID = 0 uFlags = 0 uCallbackMessage = 0 hIcon = 0 szTip = '' dwState = 0 dwStateMask = 0 szInfo = '' uTimeoutOrVersion = 0 szInfoTitle = '' dwInfoFlags = 0 def pack(self): return self._struct.pack( self._struct.size, self.hWnd, self.uID, self.uFlags, self.uCallbackMessage, self.hIcon, self.szTip.encode("gbk"), self.dwState, self.dwStateMask, self.szInfo.encode("gbk"), self.uTimeoutOrVersion, self.szInfoTitle.encode("gbk"), self.dwInfoFlags ) def __setattr__(self, name, value): # avoid wrong field names if not hasattr(self, name): raise (NameError, name) self.__dict__[name] = value class MainWindow: def __init__(self): #初始化變量 self.title ="" self.msg ="" self.duration=5#延時(shí)5秒 self.hwnd =None self.hinst =None self.regOk = False #self.creWind() def creWind(self): # Register the Window class. wc = WNDCLASS() self.hinst = wc.hInstance = GetModuleHandle(None) wc.lpszClassName = "PythonTaskbarDemo" # 字符串只要有值即可,下面3處也一樣 wc.lpfnWndProc = { win32con.WM_DESTROY: self.OnDestroy } # could also specify a wndproc. classAtom = RegisterClass(wc) # Create the Window. style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU self.hwnd = CreateWindow(classAtom, "Taskbar Demo", style, 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 0, 0, self.hinst, None ) UpdateWindow(self.hwnd) # def startBubble(self,title, msg, duration=3): if(self.hwnd==None): self.creWind() self.title =title self.msg=msg self.duration=duration iconPathName = os.path.abspath(os.path.join(sys.prefix, os.getcwd()+"\\pyc.ico")) icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE try: hicon = LoadImage(self.hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags) except: hicon = LoadIcon(0, win32con.IDI_APPLICATION) flags = NIF_ICON | NIF_MESSAGE | NIF_TIP nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, hicon, "Balloon tooltip demo") try: Shell_NotifyIcon(NIM_ADD, nid) except: self.hwnd==None self.show_balloon(self.title, self.msg) time.sleep(self.duration) #ReleaseDC(self.hwnd,wc) #DeleteDC(wc) try: DestroyWindow(self.hwnd) self.hwnd==None except: return None def show_balloon(self, title, msg): # For this message I can't use the win32gui structure because # it doesn't declare the new, required fields nid = PyNOTIFYICONDATA() nid.hWnd = self.hwnd nid.uFlags = NIF_INFO # type of balloon and text are random #nid.dwInfoFlags = NIIF_INFO nid.szInfo = msg[:64] nid.szInfoTitle = title[:256] # Call the Windows function, not the wrapped one from ctypes import windll Shell_NotifyIcon = windll.shell32.Shell_NotifyIconA Shell_NotifyIcon(NIM_MODIFY, nid.pack()) def OnDestroy(self, hwnd, msg, wparam, lparam): nid = (self.hwnd, 0) Shell_NotifyIcon(NIM_DELETE, nid) PostQuitMessage(0) # Terminate the app. if __name__=='__main__': msgTitle =u"您有一條短消息" msgContent =u"hello python" msgTitle =msgTitle bubble =MainWindow() bubble.startBubble(msgTitle,msgContent) bubble.startBubble(msgTitle,u"i'm a balloon") bubble.startBubble(msgTitle,u"how do u feel?")
本程序修改網(wǎng)上的程序,適用于WINDOWS平臺(tái),有興趣的朋友還可以修改成最小化托盤程序。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python3爬蟲學(xué)習(xí)之應(yīng)對(duì)網(wǎng)站反爬蟲機(jī)制的方法分析
這篇文章主要介紹了Python3爬蟲學(xué)習(xí)之應(yīng)對(duì)網(wǎng)站反爬蟲機(jī)制的方法,結(jié)合實(shí)例形式分析了Python3模擬瀏覽器運(yùn)行來(lái)應(yīng)對(duì)反爬蟲機(jī)制的相關(guān)操作技巧,需要的朋友可以參考下2018-12-12Python json模塊與jsonpath模塊區(qū)別詳解
這篇文章主要介紹了Python json模塊與jsonpath模塊區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03用virtualenv建立多個(gè)Python獨(dú)立虛擬開發(fā)環(huán)境
這篇文章主要為大家詳細(xì)介紹了用virtualenv建立多個(gè)Python獨(dú)立虛擬開發(fā)環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Python+Pyqt實(shí)現(xiàn)簡(jiǎn)單GUI電子時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了Python+Pyqt實(shí)現(xiàn)簡(jiǎn)單GUI電子時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07Python 語(yǔ)言實(shí)現(xiàn)六大查找算法
本文給大家分享Python 語(yǔ)言實(shí)現(xiàn)六大查找算法,針對(duì)每種算法通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-06-06