2013-04-29 46 views
5

Zajmuję się tworzeniem aplikacji w Pythonie i będzie ona używana w Windows MacOsX i Linux, a teraz rozwijam ikonę systemu (ikona stanu) (i menu po kliknięciu) na pasku Mac OSX. Czy mogę używać PyGTK w systemach Windows, Mac i Linux i używać tego samego kodu do wyświetlania ikony statusu na pasku stanu (macosx), na pasku zadań (Windows) lub Linux?Ikona statusu w GTK + na MacOSX, Windows i Linux (Gnome) oraz python

Z góry dziękuję. Jest to kod:

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() 

Jest to de taca w Mac OS X (gwiazda z GTK +):

This is system tray in MAC OS X

To tacy w systemie Windows (gwiazda z GTK +):

This is the tray in WINDOWS

w oknach nie ma problemu, menu jest widoczne po kliknięciu na ikonę, ale w Mac OX, ICOS jest s ale menu nie jest wyświetlane.

Na czym polega problem z kodem?

+0

Co masz na myśli przez "ikonę paska stanu"? Ikony wyświetlane w zasobniku systemowym w systemie Windows? Ponieważ to zachowanie występuje tylko w systemie Windows, nie masz już żadnych ikon w gnieździe systemowym na Gnome (3.4+). Może mówisz o ikonie aplikacji? – halflings

+0

Gwiazda Ikona na górnych obrazkach – ManuParra

+0

Hej, znalazłeś jakieś rozwiązanie? Aby dodać ikonę wskaźnika na OSX przy użyciu Python Gtk (lub PyGObject/Gtk + 3). –

Odpowiedz

-3

Krótka odpowiedź: tak!

Qt zarządza integracją ikon statusu we wszystkich zgodnych systemach operacyjnych.

Po prostu musisz użyć klasy QSystemTrayIcon, aby to zrobić.

Klasa QSystemTrayIcon udostępnia ikonę dla aplikacji w zasobniku systemowym. Nowoczesne systemy operacyjne zazwyczaj udostępniają specjalny obszar na pulpicie, zwany zasobnikiem systemowym lub obszarem powiadomień, gdzie długotrwałe aplikacje mogą wyświetlać ikony i krótkie wiadomości.

Więcej informacji na temat Qt Documentation.

+0

Ale chcę zrobić komercyjną aplikację, a QT nie jest wolna, czy to prawda ?. Jest biblioteka GPL Qt, której mogę użyć do mojej aplikacji i nie mam tego ograniczenia? – ManuParra

+0

Qt to LGPL. Możesz więc swobodnie używać go do aplikacji komercyjnej. Więcej informacji na temat tego pytania SO: http://stackoverflow.com/questions/352896/qt-commercial-licenses – halflings

+0

OK, ale nie PyQt zamiast pyside – ManuParra

-6

Wystąpił błąd wcięcie na prawej atrybutu click, a także trzeba podać:

/usr/bin/python

- - coding: utf-8 - -

na początku skryptu.

+2

Myślę, że to nie ma nic wspólnego z pytaniem – carpinchosaurio