Python实现Windows上气泡提醒效果的方法

本文实例讲述了python实现windows气泡提醒效果的方法。分享给大家供大家参考。具体实现方法如下:

# -*- 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; 结构大小(字节)   "I" # HWND hWnd; 处理消息的窗口的句柄   "I" # UINT uID; 唯一的标识符   "I" # UINT uFlags;   "I" # UINT uCallbackMessage; 处理消息的窗口接收的消息   "I" # HICON hIcon; 托盘图标句柄   "128s" # TCHAR szTip[128]; 提示文本   "I" # DWORD dwState; 托盘图标状态   "I" # DWORD dwStateMask; 状态掩码   "256s" # TCHAR szInfo[256]; 气泡提示文本   "I" # union {     #  UINT uTimeout; 气球提示消失时间(毫秒)     #  UINT uVersion; 版本(0 for V4, 3 for V5)     # } DUMMYUNIONNAME;   "64s" #  TCHAR szInfoTitle[64]; 气球提示标题   "I" # DWORD 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 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程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2299033.html

(0)
上一篇 2025年2月28日 04:13:21
下一篇 2025年2月19日 03:54:29

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论