版权所有,转载请注明出处:http://guangboo.org/2013/05/14/wxpython-flashwindow-using-win32api
为提醒用户注意,通常采用窗口闪烁的效果来达到这一目的,就像即时聊天工具QQ, Jabber等,当收到好友发来的消息时通常会闪烁托盘中的图标,如果聊天窗口是打开的,那么就会闪烁打开的聊天窗口在任务栏中的按钮,甚至有时连窗口的标题栏都会闪烁。
其实实现这样的闪烁功能是很简单的,如果对windows api熟悉的话,就会对FlashWindow函数不会陌生,该函数可以实现简单的窗口闪烁功能,只是窗口只闪烁一下,函数声明如下:
BOOL WINAPI FlashWindow(
_In_ HWND hWnd,
_In_ BOOL bInvert
);
参数说明可以参考windows api文档:http://msdn.microsoft.com/en-us/library/windows/desktop/ms679346(v=vs.85).aspx。
如果要定义窗口闪烁的次数和频率可以使用另一个函数FlashWindowEx,声明如下:
BOOL WINAPI FlashWindowEx(
_In_ PFLASHWINFO pfwi
);
该函数接收一个结构体参数PFLASHWINFO,结构体的声明如下:
typedef struct {
UINT cbSize;
HWND hwnd;
DWORD dwFlags;
UINT uCount;
DWORD dwTimeout;
} FLASHWINFO, *PFLASHWINFO;
主要的参数是dwFlags,该参数有多个组合,分别为:
-
FLASHW_ALL(0x00000003):同时闪烁窗口标题栏和任务栏按钮,等于FLASHW_CAPTION
|FLASHW_TRAY;
- FLASHW_CAPTION(0x00000001):闪烁窗口标题栏;
- FLASHW_STOP(0):停止闪烁,系统重置窗口到初始状态
- FLASHW_TIMER(0x00000004):不停的闪烁,知道FLASHW_TOP标记被设置
- FLASHW_TIMERNOFG(0x0000000C):不停闪烁,直到窗口前端显示
- FLASHW_TRAY(0x00000002):闪烁窗口在任务栏的按钮;
参数uCount表示闪烁的次数,当然如果dwFlags的值有FLASHW_TIMER或FLASHW_STOP时,该参数就无效了。dwTimeout是闪烁频率(毫秒)。
这里使用Python+wxPython编写如何使用函数FlashWindowEx来实现窗口的闪烁效果。代码如下:
# -*- coding:utf-8 -*-
'''
filename : winapi.py
'''
from ctypes import *
import win32con
__all__ = ['flash']
FlashWindowEx = windll.user32.FlashWindowEx
class FLASHWINFO(Structure):
_fields_ = [('cbSize', c_uint),
('hwnd', c_uint),
('dwFlags', c_uint),
('uCount', c_uint),
('dwTimeout', c_uint)]
def flash(hwnd):
'''Flash a window with caption and tray.'''
info = FLASHWINFO(0, hwnd, win32con.FLASHW_ALL | win32con.FLASHW_TIMERNOFG, 0, 0)
info.cbSize = sizeof(info)
FlashWindowEx(byref(info))
使用方法,在wx.Frame窗口中调用该函数:
import winapi
winapi.flash(self.GetHandle())
函数flash就是实现了闪烁窗口标题栏和任务栏按钮,直到窗口被激活,闪烁才停止。
分享到:
相关推荐
下面的2个实例代码是实现wxPython窗体特殊效果演示大家可以研究下 wxPython无边框窗体实现代码如下: import wx class Frame(wx.Frame): def __init__(self):#,pos=(0,0) wx.Frame.__init__(self,None,title = u...
wxPython实现Frame界面的跳转,桌面应用登录页面功能。
wxPython的wxAuiNotebook实现Tab页效果
主要为大家详细介绍了wxPython多个窗口的基本结构,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
wxPython窗口布局技术大全。。。 提供10种布局技巧!!
主要为大家详细介绍了wxPython实现窗口用图片做背景,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
用WxPython实现Sqlite3 里的数据管理通用界面,简单实现 查询,修改、新增、删除记录。 介绍可以看博客 https://blog.csdn.net/seakingx/article/details/93050958
wxpython中文教程wxpython中文教程wxpython中文教程wxpython中文教程wxpython中文教程wxpython中文教程wxpython中文教程wxpython中文教程wxpython中文教程
主要为大家详细介绍了WxPython实现无边框界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了wxPython分隔窗口的具体代码,供大家参考,具体内容如下 1、分割窗口 分隔窗口(wx.SplitterWindow)就是将窗口分成两部分,即左右或上下两部分,如下图所示窗口,整体上分为左右两个窗口,右...
wxpython实现图书管理系统.doc
豆瓣电台客户端,支持windows。简单采用wxpython中的IEwindow实现。
最新wxpython中文文档,根据官方文档排版,变量,api等为英文,相关解释为中文,更好编辑
主要为大家详细介绍了wxpython实现按钮切换界面的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
wxpython没提供界面跳转的方式,所以就需要借助threading模块,本文给大家分享python wxpython 实现界面跳转功能,感兴趣的朋友跟随小编一起看看吧
利用Python生成PDF文件时,对比了fpdf和reportlab两个库。fpdf最新更新还是2015年, 另外reportlab的资料网上更多一些。所以选择使用reportlab。 pdfgen pdfgen包是生成PDF文档最底层的接口。一个pdfgen编程实质是一...
使用python做UI也是必将对的,这是收集了wxPython中文资料,供学习交流使用