python实现桌面托盘气泡提示


Posted in Python onJuly 29, 2019

本文实例为大家分享了python实现桌面托盘气泡提示的具体代码,供大家参考,具体内容如下

# -*- encoding:utf-8 -*- 
##############################
#
# 程序名:python桌面托盘气泡
# 文件名:clsBubble.py
# 功能 :实现桌面托盘气泡提示功能
# 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; 结构大小(字节) 
 "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.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#延时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?")

本程序修改网上的程序,适用于WINDOWS平台,有兴趣的朋友还可以修改成最小化托盘程序。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用wxPython打开并播放wav文件的方法
Apr 24 Python
Python实现八大排序算法
Aug 13 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
Python实现base64编码的图片保存到本地功能示例
Jun 22 Python
学习python可以干什么
Feb 26 Python
python读写配置文件操作示例
Jul 03 Python
python中Lambda表达式详解
Nov 20 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
python上传时包含boundary时的解决方法
Apr 08 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
python 通过使用Yolact训练数据集
Apr 06 Python
python自然语言处理之字典树知识总结
Apr 25 Python
python实现桌面气泡提示功能
Jul 29 #Python
pycharm设置鼠标悬停查看方法设置
Jul 29 #Python
django rest framework vue 实现用户登录详解
Jul 29 #Python
python实现倒计时小工具
Jul 29 #Python
django rest framework 实现用户登录认证详解
Jul 29 #Python
pycharm重命名文件的方法步骤
Jul 29 #Python
PyQt5实现暗黑风格的计时器
Jul 29 #Python
You might like
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
php适配器模式简单应用示例
2019/10/23 PHP
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
国家励志奖学金获奖感言
2014/01/09 职场文书
委托书样本
2014/04/02 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python