python实现桌面托盘气泡提示
本文实例为大家分享了python实现桌面托盘气泡提示的具体代码,供大家参考,具体内容如下
#-*-encoding:utf-8-*- ############################## # #程序名:python桌面托盘气泡 #文件名:clsBubble.py #功能:实现桌面托盘气泡提示功能 #modify:byadengou2016.1.4 #program:python3.4.4 #适用:windowsXP-windows10 # ############################## importsys importos importstruct importtime importwin32con fromwin32apiimport* #TryanduseXPfeatures,sowegetalpha-blendingetc. try: fromwinxpguiimport* exceptImportError: fromwin32guiimport* classPyNOTIFYICONDATA: _struct_format=( "I"#DWORDcbSize;结构大小(字节) "I"#HWNDhWnd;处理消息的窗口的句柄 "I"#UINTuID;唯一的标识符 "I"#UINTuFlags; "I"#UINTuCallbackMessage;处理消息的窗口接收的消息 "I"#HICONhIcon;托盘图标句柄 "128s"#TCHARszTip[128];提示文本 "I"#DWORDdwState;托盘图标状态 "I"#DWORDdwStateMask;状态掩码 "256s"#TCHARszInfo[256];气泡提示文本 "I"#union{ #UINTuTimeout;气球提示消失时间(毫秒) #UINTuVersion;版本(0forV4,3forV5) #}DUMMYUNIONNAME; "64s"#TCHARszInfoTitle[64];气球提示标题 "I"#DWORDdwInfoFlags;气球提示图标 ) _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 defpack(self): returnself._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): #avoidwrongfieldnames ifnothasattr(self,name): raise(NameError,name) self.__dict__[name]=value classMainWindow: def__init__(self): #初始化变量 self.title="" self.msg="" self.duration=5#延时5秒 self.hwnd=None self.hinst=None self.regOk=False #self.creWind() defcreWind(self): #RegistertheWindowclass. wc=WNDCLASS() self.hinst=wc.hInstance=GetModuleHandle(None) wc.lpszClassName="PythonTaskbarDemo"#字符串只要有值即可,下面3处也一样 wc.lpfnWndProc={win32con.WM_DESTROY:self.OnDestroy}#couldalsospecifyawndproc. classAtom=RegisterClass(wc) #CreatetheWindow. style=win32con.WS_OVERLAPPED|win32con.WS_SYSMENU self.hwnd=CreateWindow(classAtom,"TaskbarDemo",style, 0,0,win32con.CW_USEDEFAULT,win32con.CW_USEDEFAULT, 0,0,self.hinst,None ) UpdateWindow(self.hwnd) # defstartBubble(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,"Balloontooltipdemo") 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: returnNone defshow_balloon(self,title,msg): #ForthismessageIcan'tusethewin32guistructurebecause #itdoesn'tdeclarethenew,requiredfields nid=PyNOTIFYICONDATA() nid.hWnd=self.hwnd nid.uFlags=NIF_INFO #typeofballoonandtextarerandom #nid.dwInfoFlags=NIIF_INFO nid.szInfo=msg[:64] nid.szInfoTitle=title[:256] #CalltheWindowsfunction,notthewrappedone fromctypesimportwindll Shell_NotifyIcon=windll.shell32.Shell_NotifyIconA Shell_NotifyIcon(NIM_MODIFY,nid.pack()) defOnDestroy(self,hwnd,msg,wparam,lparam): nid=(self.hwnd,0) Shell_NotifyIcon(NIM_DELETE,nid) PostQuitMessage(0)#Terminatetheapp. if__name__=='__main__': msgTitle=u"您有一条短消息" msgContent=u"hellopython" msgTitle=msgTitle bubble=MainWindow() bubble.startBubble(msgTitle,msgContent) bubble.startBubble(msgTitle,u"i'maballoon") bubble.startBubble(msgTitle,u"howdoufeel?")
本程序修改网上的程序,适用于WINDOWS平台,有兴趣的朋友还可以修改成最小化托盘程序。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。