本文实例为大家分享了python实现桌面托盘气泡提示的具体代码,供大家参考,具体内容如下
# - * -编码:utf - 8 - * ############################## # #程序名:python桌面托盘气泡 #文件名:clsBubble.py #功能:实现桌面托盘气泡提示功能 #修改:通过adengou 2016.1.4 #程序:python3.4.4 #适用:视窗xp -windows10 # ############################## 导入系统 进口操作系统 进口结构 导入的时间 进口win32con 从win32api进口* #试着使用XP的特性,所以我们得到alpha-blending等等。 试一试: 从winxpgui进口* 除了ImportError: 从win32gui进口* 类PyNOTIFYICONDATA: _struct_format=( “我”字# cbSize;结构大小(字节) “我”# HWND HWND;处理消息的窗口的句柄 “我”#使用UINT uID;唯一的标识符 “我”#使用UINT uFlags; “我”#使用UINT uCallbackMessage;处理消息的窗口接收的消息 “我”# HICON HICON;托盘图标句柄 “128年代”# TCHAR szTip [128];提示文本 “我”字# dwState;托盘图标状态 “我”字# dwStateMask;状态掩码 “256年代”# TCHAR szInfo [256];气泡提示文本 “我”#{联盟 #使用UINT uTimeout;气球提示消失时间(毫秒) #使用UINT uVersion;版本(V5 0 V4, 3) #}DUMMYUNIONNAME; “64年代”# TCHAR szInfoTitle [64];气球提示标题 “我”字# dwInfoFlags;气球提示图标 ) _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包(自我): 返回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__(自我、名称、值): #避免错误的字段名称 如果不是hasattr(自我、名称): 提高(NameError名称) 自我。__dict__[名字]=价值 类主窗口: def __init__(自我): #初始化变量 自我。标题=" " 自我。味精=" " self.duration=5 #延时5秒 自我。hwnd=没有 自我。hinst=没有 自我。regOk=False # self.creWind () def creWind(自我): #注册窗口类。 wc=WNDCLASS () 自我。hinst=wc。实例句柄=GetModuleHandle(无) wc。lpszClassName=" PythonTaskbarDemo " #字符串只要有值即可,下面3处也一样 wc。lpfnWndProc={win32con。WM_DESTROY:自我。OnDestroy} #也可以指定一个指向。 classAtom=RegisterClass (wc) #创建窗口。=win32con风格。WS_OVERLAPPED | win32con.WS_SYSMENU 自我。hwnd=CreateWindow (classAtom,“任务栏演示”风格, 0,0,win32con。CW_USEDEFAULT win32con.CW_USEDEFAULT, 0,0,自我。hinst,没有 ) UpdateWindow (self.hwnd) # def startBubble(自我、标题、味精、持续时间=3): 如果(self.hwnd==None): self.creWind () 自我。标题=标题 self.msg=味精 self.duration=持续时间 iconPathName=os.path.abspath (os.path.join (sys。前缀,os.getcwd () +“\ \ pyc.ico”)) icon_flags=win32con。LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE 试一试: hicon=LoadImage(自我。hinst、iconPathName win32con。IMAGE_ICON 0 0, icon_flags) 除了: win32con.IDI_APPLICATION hicon=LoadIcon (0) 旗帜=NIF_ICON | NIF_MESSAGE | NIF_TIP nid=(自我。hwnd, 0,旗帜,win32con。hicon WM_USER + 20日,“气球提示演示”) 试一试: )Shell_NotifyIcon (NIM_ADD国家免疫日 除了: self.hwnd==没有 self.show_balloon(自我。标题、self.msg) time . sleep (self.duration) # ReleaseDC (self.hwnd wc) # DeleteDC (wc) 试一试: DestroyWindow (self.hwnd) self.hwnd==没有 除了: 回来没有 def show_balloon(自我、标题、味精): #对于这个消息我不能使用因为win32gui结构 #不申报新,需要的字段 nid=PyNOTIFYICONDATA () nid。hWnd=self.hwnd nid。uFlags=NIF_INFO #类型的气球和文本是随机的 。#国家免疫日dwInfoFlags=NIIF_INFO nid。szInfo=味精(64): nid。szInfoTitle=标题(256): #调用窗口函数,而不是包装 从ctypes进口windll Shell_NotifyIcon=windll.shell32.Shell_NotifyIconA Shell_NotifyIcon (NIM_MODIFY nid.pack ()) def OnDestroy(自我,hwnd,味精、按钮、lparam): nid=(自我。hwnd, 0) )Shell_NotifyIcon (NIM_DELETE国家免疫日 PostQuitMessage(0) #终止应用程序。 if __name__==癬_main__”: msgTitle=u”您有一条短消息” python msgContent=u“你好” msgTitle=msgTitle 泡沫=主窗口() bubble.startBubble (msgTitle msgContent) 泡沫。startBubble (msgTitle u“我一个气球”) 泡沫。startBubble (msgTitle u“怎么你觉得# 63;”)python实现桌面托盘气泡提示