本文实例讲述了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程序设计有所帮助。

python泡泡_Python实现Windows上气泡提醒效果的方法相关推荐

  1. Linux或者Windows上安装lxml失败解决方法

    Linux或者Windows上安装lxml失败解决方法. 在Windows上安装失败,失败原因及解决方法总结如下: 1.pip版本未更新解决方法:通过pip安装时,需保证pip的版本没有问题,更新方法 ...

  2. 在WINDOWS上开发IOS应用的方法

    在WINDOWS上开发IOS应用的方法 1,虚拟机上安装MAC系统,里面装XCODE 2,WINDOWS上安装code blocks,这个IDE可以直接在WIN上编译XCODE工程: 最新的IOS在w ...

  3. 测试python安装成功_Python在Windows上安装配置测试

    Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 2.x还是3.x 目前,Python ...

  4. python使用-如何在Windows上使用Python进行开发

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 一直以来C#都是微软在编程语言方面最为显著的Tag,但时至今日Python ...

  5. python模拟浏览器上传文件_Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)...

    http协议本身的原始方法不支持multipart/form-data请求,这个请求由原始方法演变而来的. multipart/form-data的基础方法是post,也就是说是由post方法来组合实 ...

  6. python安装到桌面的路径是什么_Python 获取windows桌面路径的5种方法小结

    这里介绍了5中python获取window桌面路径的方法,获取这个路径有什么用呢?一般是将程序生成的文档输出到桌面便于查看编辑. 前两个方法是通过注册表来获取当前windows桌面绝对路径,比较推荐使 ...

  7. python获取网页图片_Python获取网页上图片下载地址的方法

    本文实例讲述了Python获取网页上图片下载地址的方法.分享给大家供大家参考.具体如下: 这里获取网页上图片的下载地址是正在写的数据采集中的一段,代码如下: #!/user/bin/python3 i ...

  8. python 下三角矩阵_Python | 矩阵的上三角

    python 下三角矩阵 A matrix can be seen in different ways and one of them is the upper triangular matrix p ...

  9. 使Celery 4在Windows上运行的2种方法

    该博客文章中使用的源代码可在GitHub上找到. 自Celery 4.x版本起,Celery不再正式支持Windows.尽管Celery 3确实支持Windows,但它与Celery 4不兼容.因此, ...

最新文章

  1. PHP glob() 函数
  2. python爬虫详细步骤-Python爬虫的两套解析方法和四种爬虫实现过程
  3. php流媒体视频下载,如何使用PHP流媒体文件?
  4. Ping命令检测网站运行状态
  5. python 多窗口编辑
  6. Spring Boot项目中使用RestTemplate调用https接口出现 unable to find valid certification path to requested target
  7. selenium+python环境搭建
  8. 从认知负荷理论看语音交互设计
  9. Ubuntu 部署Django, Wagtail,Postgres, Nginx, Gunicorn,Supervisor
  10. 面向未来的大数据核心技术都有什么?
  11. 地震 位错模型 matlab,地球物理学论文范文参考 地球物理学毕业论文范文[精选]...
  12. 在Mac上开启AptX
  13. js + css 实现手风琴
  14. idea运行springboot出现Process finished with exit code -1073741819 (0xC0000005)
  15. 基于百度编辑器Ueditor的二次开发
  16. Mac-Mac上如何制作GIF动图
  17. iPad2 iOS5.1.1完美越狱教程(Absinthe2)
  18. Matlab下地形图绘图包m_map绘图包绘制高分辨率海岸线、国界线与河流
  19. ThreeJS-前端3D可视化开发入门-vue
  20. 掌财社:三连阴洗盘是什么意思?

热门文章

  1. oracle中integer最大值,integer表示的最大整数
  2. android app安装的过程,Pm install App流程
  3. 测试工程师简历编写指南
  4. 一文读懂机器学习,大数据/自然语言处理/算法全有了……
  5. 9月17-18日黑客马拉松挑战赛-北京站
  6. 小白畅聊区块链的容量问题
  7. ELF加载器的原理与实现
  8. 易信免费电话,确实业界良心
  9. win10电脑连接投影仪怎样设置,有相关教程吗
  10. 如何做浏览器兼容性测试?教你几招