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程序设计有所帮助。

(0)

相关推荐

  • 利用Python实现图书超期提醒

    一.模拟登录图书馆管理系统 我们可以先看一下登录页面(很多学校这些管理系统页面就是很low): 两种方式去模拟登录图书馆: 1. 构造登录表单进行模拟登录 这种方式模拟登录似乎是很可靠的,但有时候就是在验证码获取上很困难,如果简单的网站,有的会利用当前时间戳来构造验证码,这种就很容易从网页上观察出来,但比如我们这次要模拟登录的网站似乎是不能这样做,因为它是使用JavaScript标准库里的Math函数直接随机生成的验证码链接,可以从下面图片上观察验证码处的代码: 它使用Math.random()

  • python&MongoDB爬取图书馆借阅记录

    直接上需求和代码 首先是需要爬取的链接和网页:http://211.81.31.34/uhtbin/cgisirsi/x/0/0/57/49?user_id=LIBSCI_ENGI&password=LIBSC 登陆进去之后进入我的账号--借阅.预约及申请记录--借阅历史就可以看到所要爬取的内容 然后将借阅历史中的题名.著者.借阅日期.归还日期.索书号存入Mongodb数据库中,以上便是这次爬虫的需求. 下面开始: 各软件版本为: python 2.7.11 MongoDb 3.2.1 Pych

  • Python抓取京东图书评论数据

    京东图书评论有非常丰富的信息,这里面就包含了购买日期.书名.作者.好评.中评.差评等等.以购买日期为例,使用Python + Mysql的搭配进行实现,程序不大,才100行.相关的解释我都在程序里加注了: from selenium import webdriver from bs4 import BeautifulSoup import re import win32com.client import threading,time import MySQLdb def mydebug():  

  • python中执行shell命令的几个方法小结

    最近有个需求就是页面上执行shell命令,第一想到的就是os.system, 复制代码 代码如下: os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令执行结果 0或者1,当然不满足需求了. 尝试第二种方案 os.popen() 复制代码 代码如下: output = os.popen('cat /proc/cpuinfo') print output.read() 通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的

  • python中的字典详细介绍

    一.什么是字典? 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型. 字典类型与序列类型的区别: 1.存取和访问数据的方式不同. 2.序列类型只用数字类型的键(从序列的开始按数值顺序索引): 3.映射类型可以用其他对象类型作键(如:数字.字符串.元祖,一般用字符串作键),和序列类型的键不同,映射类型的

  • 比较详细Python正则表达式操作指南(re使用)

    就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.使用这个小型语言,你可以为想要匹配的相应字符串集指定规则:该字符串集可能包含英文语句.e-mail地址.TeX命令或任何你想搞定的东西.然後你可以问诸如"这个字符串匹配该模式吗?"或"在这个字符串中是否有部分匹配该模式呢?".你也可以使用 RE 以各种方式来修改或分割字符串. 正则表达式模式被编译成一系列的字节码,然後由用 C

  • 使用Python的Tornado框架实现一个Web端图书展示页面

    首先,为什么选择Tornado: 1.高性能的网络库,这可以和gevent,twisted,libevent等做对. 提供了异步io支持,超时事件处理,在此基础上提供了tcpserver,httpclient,尤其是curlhttpclient, 在现有http客户端中肯定排第一.可以用来做爬虫,游戏服务器,据我所知业界已有使用tornado作为游戏服务器 2.web框架,这可以和django,flask对. 提供了路由,模板等web框架必备组件.与其他区别是tornado是异步的,天然适合长轮

  • Python入门教程 超详细1小时学会Python

    为什么使用Python    假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行

  • 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 * e

  • Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)

    http协议本身的原始方法不支持multipart/form-data请求,这个请求由原始方法演变而来的. multipart/form-data的基础方法是post,也就是说是由post方法来组合实现的,与post方法的不同之处:请求头,请求体. multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,且其值也必须规定为multipart/form-data,同时还需要规定一个内容分割符用于分割请求体中的多个post的内容,如文件内容和文本内容自然需要

  • python基于windows平台锁定键盘输入的方法

    本文实例讲述了python基于windows平台锁定键盘输入的方法.分享给大家供大家参考.具体分析如下: pywin32中没有BlockInput这个函数.VC++中有,发现这个方法就可以了. 该代码可阻断windows平台下的鼠标键盘输入,如下所示: # coding: UTF-8 import time from ctypes import * user32 = windll.LoadLibrary('user32.dll') user32.BlockInput(True); time.sl

  • swift在IOS应用图标上添加提醒个数的方法

    在应用图标右上角添加消息数提醒,可以很方便的告知用户该应用中有无新消息需要处理.下面用xcode 7.3.1来简要说明一下如何用swift语言进行此功能的实现. 1.修改 AppDelegate.swift // // AppDelegate.swift // RainbowDemo // // Created by Jackwang on 16/8/17. // Copyright © 2016年 Jackwang . All rights reserved. // import UIKit

  • Python获取网页上图片下载地址的方法

    本文实例讲述了Python获取网页上图片下载地址的方法.分享给大家供大家参考.具体如下: 这里获取网页上图片的下载地址是正在写的数据采集中的一段,代码如下: 复制代码 代码如下: #!/user/bin/python3 import urllib2 from HTMLParser import HTMLParser class MyHtmlParser(HTMLParser):     links = []     def handle_starttag(self, tag, attrs):  

  • Python实现PS图像抽象画风效果的方法

    本文实例讲述了Python实现PS图像抽象画风效果的方法.分享给大家供大家参考,具体如下: 今天介绍一种基于图像分割和color map 随机采样生成一种抽象画风的图像特效,简单来说,就是先生成一张 color map 图,颜色是渐变的,然后针对要处理的图像,进行分割,这里用的是 SLIC 分割算法,然后从 color map 中随机采样,将采样得到的像素值赋予分割后的图像区域. # -*- coding: utf-8 -*- """ Created on Sun Aug 2

  • Python 获取windows桌面路径的5种方法小结

    这里介绍了5中python获取window桌面路径的方法,获取这个路径有什么用呢?一般是将程序生成的文档输出到桌面便于查看编辑. 前两个方法是通过注册表来获取当前windows桌面绝对路径,比较推荐使用第一个,因为不需要安装额外的扩展,其他的可以了解下 1.用内置的winreg(推荐) import _winreg def get_desktop(): key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Win

  • Python 实现Windows开机运行某软件的方法

    开机运行:随系统启动的应用程序,当系统启动之后会自动加载的应用 在注册表中添加启动项便可实现开机启动. 代码如下: # -*- coding:utf-8 -*- import win32api import win32con name = 'oftpublic' # 要添加的项值名称 path = 'C:\softpublic.exe' # 要添加的exe路径 # 注册表项名 KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run

  • python MySQLdb Windows下安装教程及问题解决方法

    使用python访问mysql,需要一系列安装 linux下MySQLdb安装见  Python MySQLdb在Linux下的快速安装 http://www.jb51.net/article/65743.htm ------------------------------------------------------------- 以下是windows环境下的: 1. 安装数据库mysql 下载地址:http://www.mysql.com/downloads/ 可以顺带装个图形工具,我用的

  • Python实现PS图像明亮度调整效果示例

    本文实例讲述了Python实现PS图像明亮度调整效果.分享给大家供大家参考,具体如下: 这里用 Python 实现 PS 图像调整中的明度调整: 我们知道,一般的非线性RGB亮度调整只是在原有R.G.B值基础上增加和减少一定量来实现的,而PS的明度调整原理还得从前面那个公式上去找.我们将正向明度调整公式: RGB = RGB + (255 - RGB) * value / 255 转换为 RGB = (RGB * (255 - value) + 255 * value) / 255, 如果val

随机推荐