没有所谓的捷径
一切都是时间最平凡的累积

wxpython如何实现来qq消息闪烁图标

刚开始想到是否是制作了一个gif图片,来消息时调用该图片作为图标实现的闪烁,但尝试失败

原因是wxpython图标会将图片处理成位图导致无法实现动画,

后来想到用两张图片来回切换实现,一张空白图,一张正常的图标

1.参看上一篇文章http://www.hongyanzi.top/7403.html 将两个图片压缩进py文件,空白图片在制作时,可以在在图片中加一个1像素的点即可

2.具体实现方法

class timerico(threading.Thread):
    """托盘图标闪烁
    继承线程类,重写run方法,0.5s切换两个函数实现类似qq消息闪烁
    """

    def __init__(self, func1, func2, title):
        threading.Thread.__init__(self)
        self.func1 = func1  # 显示托盘图标1(空白图)
        self.func2 = func2  # 显示托盘图标2(正常图)
        self.title = title
        self.running.set() # 将running设置为True

    def stop(self):
        self.running.clear() # 设置为False

    def run(self):
        n = 0
        while self.running.isSet():
            if n % 2 == 0:
                self.func1(self.title)
            else:
                self.func2(self.title)
            time.sleep(0.5)
            n += 1
        self.func2(self.title)  # 确保最后停留在图标显示界面


class MyTaskBarIcon(wx.adv.TaskBarIcon):
    """系统托盘图标程序"""
    def __init__(self, frame, counter):
        wx.adv.TaskBarIcon.__init__(self)

    def timeiconull(self, title):
        # 调用空白图标作为托盘图标,iconshow.iconhide来自压缩图片文件iconshow.py中的iconhide变量
        self.SetIcon(iconshow.iconhide.GetIcon(), title)

    def timeicoshow(self, title):
        # 调用正常图标作为托盘图标,iconshow.iconshow来自压缩图片文件iconshow.py中的iconshow变量
        self.SetIcon(iconshow.iconshow.GetIcon(), title)

def showico(self, title):
    # 新建线程开始托盘图标闪烁
    if not self.icoshow and not self.IsShown():
        t = timerico(self.icon.timeiconull, self.icon.timeicoshow, title)
        self.icoshow.append(t)
        t.start()

timeiconull函数显示空白图标

timeicoshow函数显示正常图标

showico调用图标闪烁入口函数,来消息时调用

timerico类继承了线程类,传入timeiconull timeicoshow两个方法,

timerico.run重写线程类run方法间隔0.5s执行不同函数

timerico.stop提取消息后停止线程,也就停止了闪烁

 

赞(0) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:lwarm@qq.com。文章观点不代表本站立场。本站原创内容未经允许不得转载,或转载时需注明出处:红岩子 » wxpython如何实现来qq消息闪烁图标
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

今天所做的努力都是在为明天积蓄力量

联系我们赞助我们