我试图创建一个简单的应用程序驻留在通知区域或任务栏/系统托盘区域。我希望它是跨平台的,所以这就是我使用wxPython的原因。Macintosh wxPython EVT_TASKBAR_LEFT_UP或替代
该应用程序在Windows和Linux下运行良好,但在Macintosh下,单击TaskbarIcon时无法显示主窗口。我不担心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左键点击该图标打印;“左调升。”右键点击'Right upped',然后应用程序退出。 在Macintosh上,左键单击该图标不会执行任何操作,除了闪烁图标;右键点击'Right upped',然后应用程序退出。
这适用于码头中的图标,但这不是“TaskBarIcon”。如果你在OSX下创建一个TaskBarIcon,它会出现在顶部的菜单栏中,这个解决方案不会帮助从那里获取事件:( – GreenAsJade
是的,对于顶部菜单栏上实际的*系统托盘*图标,看起来似乎在* unstable *(当时是2.9x)版本的** wxPython **中实现的功能,可以在新的稳定版本3.x中实现,我需要重新检查。 –
我在3。 x的wxPython(2.7 Python)问题仍然存在。 – GreenAsJade