通知領域またはタスクバー/システムトレイ領域にある単純なアプリケーションを作成しようとしています。クロスプラットフォームにしたいので、wxPythonを使用しています。
このアプリケーションは、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では、アイコンを左クリックすると「Leftupped。」と表示されます。右クリックすると「右上」と表示され、アプリケーションが終了します。Macintoshでは、アイコンを左クリックしても、アイコンを点滅させる以外は何もしません。右クリックすると「右上」と表示され、アプリケーションが終了します。