2013-04-29 1 views
5

Я разрабатываю приложение на python и оно будет использоваться в Windows MacOsX и Linux, и теперь я разрабатываю значок системы (значок состояния) (и меню, когда вы нажимаете) в панели Mac OSX. Могу ли я использовать PyGTK в окнах, mac и linux и использовать тот же код для отображения статуса статуса в строке состояния (macosx), в системном трее (windows) или linux?Значок состояния в GTK + на MacOSX, Windows и Linux (Gnome) и python

Заранее спасибо. Это код:

import gtk 


class SystrayIconApp: 
    def __init__(self): 
     self.tray = gtk.StatusIcon() 
     self.tray.set_from_stock(gtk.STOCK_ABOUT) 
     self.tray.connect('popup-menu', self.on_right_click) 
     self.tray.set_tooltip(('Sample tray app')) 


     def on_right_click(self, icon, event_button, event_time): 
      self.make_menu(event_button, event_time) 

     def make_menu(self, event_button, event_time): 
      menu = gtk.Menu() 

      # show about dialog 
      about = gtk.MenuItem("About") 
      about.show() 
      menu.append(about) 
      about.connect('activate', self.show_about_dialog) 

      # add quit item 
      quit = gtk.MenuItem("Quit") 
      quit.show() 
      menu.append(quit) 
      quit.connect('activate', gtk.main_quit) 

      menu.popup(None, None, gtk.status_icon_position_menu, 
        event_button, event_time, self.tray) 

    def show_about_dialog(self, widget): 
     about_dialog = gtk.AboutDialog() 
     about_dialog.set_destroy_with_parent (True) 
     about_dialog.set_icon_name ("SystrayIcon") 
     about_dialog.set_name('SystrayIcon') 
     about_dialog.set_version('0.1') 
     about_dialog.set_copyright("(C) 2010 João Pinto") 
     about_dialog.set_comments(("Program to demonstrate a system tray icon")) 
     about_dialog.set_authors(['João Pinto <[email protected]>']) 
     about_dialog.run() 
     about_dialog.destroy() 

if __name__ == "__main__": 
    SystrayIconApp() 
    gtk.main() 

Это де лоток в MAC OS X (звезда с GTK +):

This is system tray in MAC OS X

Это лоток в WINDOWS (звезда с GTK +):

This is the tray in WINDOWS

на окнах нет проблем, меню не отображается при нажатии на иконку, но в Mac OX, ICOS является s но меню не отображается.

В чем проблема с кодом?

+0

Что вы подразумеваете под "значком строки состояния"? Значки, отображаемые в лотке системы в Windows? Поскольку это поведение существует только в Windows, у вас больше нет значков в лотке системы в Gnome (3.4+). Может быть, вы говорите о значке приложения? – halflings

+0

Значок звездочки на верхних изображениях – ManuParra

+0

Эй, вы нашли решение? Для добавления значка индикатора в OSX с использованием Python Gtk (или PyGObject/Gtk + 3). –

ответ

-3

Короткий ответ: Да!

Qt управляет интеграцией значков состояния во всех совместимых операционных системах.

Для этого вам необходимо использовать класс QSystemTrayIcon.

Класс QSystemTrayIcon предоставляет значок для приложения в системном трее. Современные операционные системы обычно предоставляют специальную область на рабочем столе, называемую системным лотком или областью уведомлений, где долгосрочные приложения могут отображать значки и короткие сообщения.

Дополнительная информация о Qt Documentation.

+0

Но я хочу сделать коммерческое приложение, а QT не является бесплатным, это правда ?. Есть библиотека GPL Qt, которую я могу использовать для моего приложения, и у меня есть это ограничение? – ManuParra

+0

Qt - LGPL. Таким образом, вы можете свободно использовать его для коммерческого приложения. Дополнительная информация по этому вопросу SO: http://stackoverflow.com/questions/352896/qt-commercial-licenses – halflings

+0

Хорошо, но не PyQt вместо pyside – ManuParra

-6

Существует ошибка отступы на правой атрибуте мыши, а также вы должны включать:

/USR/бен/питон

- - кодирование: UTF-8 - -

в начале скрипта.

+2

Я думаю, что это не имеет никакого отношения к вопросу – carpinchosaurio