wxPython实现windows右下角弹出框

参考了此博客的代码: http://blog.csdn.net/xugangjava/article/details/7478139
用wxpython实现了windows右下角弹框的功能
原博客的代码,在我电脑上跑始终出错,
报错:pywintypes.error: (1461, 'GetMonitorInfo', '无效监视器句柄。')

我修改了代码,可以运行了。如下:

# -*- encoding:utf-8 -*-
import wx, os, win32api

from win32con import AW_ACTIVATE, AW_BLEND, AW_CENTER, AW_HIDE, AW_HOR_NEGATIVE, \
    AW_HOR_POSITIVE, AW_SLIDE, AW_VER_NEGATIVE, AW_VER_POSITIVE, SPI_GETWORKAREA
import win32api
from ctypes import windll, c_int


class Popup(wx.MiniFrame):
    def __init__(self, label, parent=None, title=""):
        wx.MiniFrame.__init__(self, parent, -1, title, wx.DefaultPosition, size=(280, 180),
                              style=wx.DEFAULT_FRAME_STYLE | wx.STAY_ON_TOP)
        # workarea = win32api.GetMonitorInfo(1)['Work']
        for monitor in win32api.EnumDisplayMonitors():
            monitor_info = win32api.GetMonitorInfo(monitor[0])
            if monitor_info['Flags'] == 1:
                break
        workarea = monitor_info['Work']

        pos = (workarea[2] - 280, workarea[3] - 180)
        bg = wx.Colour(255, 255, 225)
        self.SetBackgroundColour(bg)
        self.SetPosition(pos)
        text = wx.StaticText(self, -1, label)
        # font = wx.Font(13, wx.FONTENCODING_SYSTEM, wx.NORMAL, wx.NORMAL)
        # text.SetFont(font)
        text.SetBackgroundColour(bg)
        flags = AW_SLIDE | AW_VER_NEGATIVE | AW_ACTIVATE
        windll.user32.AnimateWindow(c_int(self.GetHandle()), c_int(600), c_int(flags))
        self.Refresh()
        self.Bind(wx.EVT_CLOSE, self.RemovePopup)

    def RemovePopup(self, evt=None):
        flags = AW_BLEND | AW_HIDE
        windll.user32.AnimateWindow(c_int(self.GetHandle()), c_int(600), c_int(flags))
        self.Destroy()


if __name__ == '__main__':
    app = wx.PySimpleApp()

    f = Popup('测试右下角弹出框\n测试右下角弹出框\n\n')
    f.Show()
    app.MainLoop()

 

转载于:https://my.oschina.net/u/2396236/blog/1613422

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值