栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法在wxPython中正确使用wx.NotificationMessage

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法在wxPython中正确使用wx.NotificationMessage

我不建议您现在使用2.9。尝试时遇到了一些奇怪的错误。

您可以在2.8中具有相同的功能。我使用的是经过一段时间修改的代码。

import wx, systry:    import win32gui #, win32con    WIN32 = Trueexcept:    WIN32 = Falseclass BalloonTaskBarIcon(wx.TaskBarIcon):    """    base Taskbar Icon Class    """    def __init__(self):        wx.TaskBarIcon.__init__(self)        self.icon = None        self.tooltip = ""    def ShowBalloon(self, title, text, msec = 0, flags = 0):        """        Show Balloon tooltip         @param title - Title for balloon tooltip         @param msg   - Balloon tooltip text         @param msec  - Timeout for balloon tooltip, in milliseconds         @param flags -  one of wx.ICON_INFORMATION, wx.ICON_WARNING, wx.ICON_ERROR        """        if WIN32 and self.IsIconInstalled(): try:     self.__SetBalloonTip(self.icon.GetHandle(), title, text, msec, flags) except Exception:     pass # print(e) Silent error    def __SetBalloonTip(self, hicon, title, msg, msec, flags):        # translate flags        infoFlags = 0        if flags & wx.ICON_INFORMATION: infoFlags |= win32gui.NIIF_INFO        elif flags & wx.ICON_WARNING: infoFlags |= win32gui.NIIF_WARNING        elif flags & wx.ICON_ERROR: infoFlags |= win32gui.NIIF_ERROR        # Show balloon        lpdata = (self.__GetIconHandle(),   # hWnd       99, # ID       win32gui.NIF_MESSAGE|win32gui.NIF_INFO|win32gui.NIF_ICON, # flags: Combination of NIF_* flags       0,  # CallbackMessage: Message id to be pass to hWnd when processing messages       hicon,         # hIcon: Handle to the icon to be displayed       '', # Tip: Tooltip text       msg,# Info: Balloon tooltip text       msec,          # Timeout: Timeout for balloon tooltip, in milliseconds       title,         # InfoTitle: Title for balloon tooltip       infoFlags      # InfoFlags: Combination of NIIF_* flags       )        win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, lpdata)        self.SetIcon(self.icon, self.tooltip)   # Hack: because we have no access to the real CallbackMessage value    def __GetIconHandle(self):        """        Find the icon window.        This is ugly but for now there is no way to find this window directly from wx        """        if not hasattr(self, "_chwnd"): try:     for handle in wx.GetTopLevelWindows():         if handle.GetWindowStyle():  continue         handle = handle.GetHandle()         if len(win32gui.GetWindowText(handle)) == 0:  self._chwnd = handle  break     if not hasattr(self, "_chwnd"):         raise Exception except:     raise Exception, "Icon window not found"        return self._chwnd    def SetIcon(self, icon, tooltip = ""):        self.icon = icon        self.tooltip = tooltip        wx.TaskBarIcon.SetIcon(self, icon, tooltip)    def RemoveIcon(self):        self.icon = None        self.tooltip = ""        wx.TaskBarIcon.RemoveIcon(self)# ===================================================================app = wx.PySimpleApp()class TestTaskBarIcon(BalloonTaskBarIcon):    def __init__(self):        wx.TaskBarIcon.__init__(self)        # create a test icon        bmp = wx.EmptyBitmap(16, 16)        dc = wx.MemoryDC(bmp)        dc.SetBrush(wx.RED_BRUSH)        dc.Clear()        dc.SelectObject(wx.NullBitmap)        testicon = wx.EmptyIcon()        testicon.CopyFromBitmap(bmp)        self.SetIcon(testicon)        self.Bind(wx.EVT_TASKBAR_LEFT_UP, lambda e: (self.RemoveIcon(),sys.exit()))        self.ShowBalloon("", "Hello world!")icon = TestTaskBarIcon()app.MainLoop()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号