gpt4 book ai didi

python - Macintosh wxPython EVT_TASKBAR_LEFT_UP 或替代

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:00 27 4
gpt4 key购买 nike

我正在尝试创建一个驻留在通知区域或任务栏/系统托盘区域中的简单应用程序。我希望它是跨平台的,所以这就是我使用 wxPython 的原因。

该应用程序在 Windows 和 Linux 下运行良好,但在 Macintosh 下单击任务栏图标时无法显示主窗口。我对 TaskbarIcon 出现在停靠栏中这一事实并不感到困扰。只是如果没有它,我的应用程序将无法运行。

下面是一些可以重现问题的简化代码:

from views import embimgs                                     
import wx


class MyTaskBarIcon(wx.TaskBarIcon):

def __init__(self, app):
wx.TaskBarIcon.__init__(self)

self.app = app

self.Bind(wx.EVT_TASKBAR_LEFT_UP, self.on_left_up)
self.Bind(wx.EVT_TASKBAR_RIGHT_UP, self.on_right_up)

def on_left_up(self, evt):
print 'Left upped!'

def on_right_up(self, evt):
print 'Right upped!'
self.app.ExitMainLoop()


def main():
app = wx.PySimpleApp()
mti = MyTaskBarIcon(app)
mti.SetIcon(wx.IconFromBitmap(embimgs.logo64.GetBitmap()))
app.MainLoop()
app.Destroy()


if __name__ == '__main__':
main()

在 Windows 和 Linux 上,左键单击图标会显示“Left upped”。右键单击打印“Right upup.”,然后应用程序退出。在 Macintosh 上,左键单击图标除了闪烁图标外没有任何作用;右键单击打印“Right upuped.”,然后应用程序退出。

最佳答案

如解释here有几种方法可以覆盖某些仅在 Mac 上可用的操作。

在我的例子中,我只需要覆盖 wx.App 类的 MacReopenApp 方法。每次用户单击停靠栏中的图标时都会调用此方法。

例如,只需在类中添加:

    def MacReopenApp(self):
print 'Dock Icon clicked!'

仅作补充,其他方法有:MacOpenFile(self, filename)、MacNewFile(self) 和 MacPrintFile(self, file_path)

关于python - Macintosh wxPython EVT_TASKBAR_LEFT_UP 或替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com