2016-06-21 3 views
3

は、AppIndicator3を使用してメニュー付きトレイアイコンを作成します。しかし、このソリューションは移植性がありません。たとえば、it doesn't work on FreeBSDはこのシステムにlibappindicator3がないためです。私はそのようなコードがWindowsとMacOSのどちらでも動作しないと考えています。Python 3&GTK3:クロスプラットフォームトレーアイコン

AppIndicator3を使わずに同じようにするには、すべての(またはほぼすべての)システムでコードを使用できますか?

答えて

4

私はそれを理解したと思います。 Linuxの+ユニティ上

class TrayIcon: 

    def __init__(self, appid, icon, menu): 
     self.menu = menu 

     APPIND_SUPPORT = 1 
     try: 
      from gi.repository import AppIndicator3 
     except: 
      APPIND_SUPPORT = 0 

     if APPIND_SUPPORT == 1: 
      self.ind = AppIndicator3.Indicator.new(
       appid, icon, AppIndicator3.IndicatorCategory.APPLICATION_STATUS) 
      self.ind.set_status(AppIndicator3.IndicatorStatus.ACTIVE) 
      self.ind.set_menu(self.menu) 
     else: 
      self.ind = Gtk.StatusIcon() 
      self.ind.set_from_file(icon) 
      self.ind.connect('popup-menu', self.onPopupMenu) 

    def onPopupMenu(self, icon, button, time): 
     self.menu.popup(None, None, Gtk.StatusIcon.position_menu, icon, button, time) 

作品、Linuxの+ Xfceの、FreeBSDの+ i3は:アイデアはAppIndicator3が使用できない場合Gtk.StatusIconにフォールバックすることです。

も参照してください:

関連する問題