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中xrange用法分析
Apr 15 Python
详解Python中列表和元祖的使用方法
Apr 25 Python
Python爬虫爬取美剧网站的实现代码
Sep 03 Python
单链表反转python实现代码示例
Feb 08 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
Pandas操作CSV文件的读写实现方法
Nov 13 Python
python 创建一维的0向量实例
Dec 02 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
Python 如何创建一个线程池
Jul 28 Python
Pandas之缺失数据的实现
Jan 06 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php的ddos攻击解决方法
2015/01/08 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
js 函数性能比较方法
2020/08/24 Javascript
原生js实现分页效果
2020/09/23 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
美国在线宠物商店:Chewy
2019/01/12 全球购物
天网面试题
2013/04/07 面试题
Linux常见面试题
2016/10/04 面试题
内容编辑个人求职信
2013/12/10 职场文书
初三家长会邀请函
2014/01/18 职场文书
运动会广播稿150字
2014/02/19 职场文书
安全环保标语
2014/06/09 职场文书
国贸专业求职信
2014/06/28 职场文书