Python實現(xiàn)Windows上氣泡提醒效果的方法
本文實例講述了Python實現(xiàn)Windows上氣泡提醒效果的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:
# -*- encoding: gbk -*- 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)識符 "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; 氣球提示消失時間(毫秒) # 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, self.dwState, self.dwStateMask, self.szInfo, self.uTimeoutOrVersion, self.szInfoTitle, 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, title, msg, duration=3): # Register the Window class. wc = WNDCLASS() 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, hinst, None ) UpdateWindow(self.hwnd) iconPathName = os.path.abspath(os.path.join(sys.prefix, "pyc.ico")) icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE try: hicon = LoadImage(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") Shell_NotifyIcon(NIM_ADD, nid) self.show_balloon(title, msg) time.sleep(duration) DestroyWindow(self.hwnd) 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__': MainWindow("您有一條短消息", "您該睡覺了")
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
python如何使用requests提交post請求并上傳文件(multipart/form-data)
這篇文章主要給大家介紹了關(guān)于python如何使用requests提交post請求并上傳文件(multipart/form-data)的相關(guān)資料,Python有許多庫支持,它們可以簡化HTTP上的數(shù)據(jù)傳輸,requests庫是最受歡迎的Python包之一,因為它在網(wǎng)絡(luò)刮削中被大量使用,需要的朋友可以參考下2023-11-11Python實現(xiàn)希爾排序,歸并排序和桶排序的示例代碼
希爾、歸并、快速排序算法可歸為同一類,它們的共同點都是建立在分治思想之上。把大問題分拆成小問題,解決所有小問題后,再合并每一個小問題的結(jié)果,最終得到對原始問題的解答。本文將介紹這三種算法的實現(xiàn)代碼,需要的可以參考一下2022-04-04Python深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)殘差塊
這篇文章主要為大家介紹了Python深度學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)殘差塊示例詳解有需要的 朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10探索Python元類的魅力:靈活定制類的創(chuàng)建過程
在Python編程中,元類(Metaclass)是一項高級特性,它允許我們在定義類的時候動態(tài)地控制類的創(chuàng)建過程。元類提供了一種強大的機制,可以對類進行定制化,擴展其功能,并在類的實例化過程中執(zhí)行額外的操作,本文將深入解析2023-10-10解決Pyinstaller 打包exe文件 取消dos窗口(黑框框)的問題
今天小編就為大家分享一篇解決Pyinstaller 打包exe文件 取消dos窗口(黑框框)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06使用Python的Django和layim實現(xiàn)即時通訊的方法
這篇文章主要介紹了使用Python的Django和layim實現(xiàn)即時通訊的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05