2013-04-29 11 views
5

Ich entwickle eine Anwendung in Python und es wird in Windows MacOsX und Linux verwendet, und jetzt entwickle ich System (Statussymbol) -Symbol (und das Menü, wenn Sie klicken) in der Mac OSX Leiste. Kann ich PyGTK in Windows, Mac und Linux verwenden und denselben Code für das Symbol zum Anzeigen des Status in Statusleiste (Macosx), System Tray (Windows) oder Linux verwenden?Statussymbol in GTK + auf MacOSX, Windows und Linux (Gnome) und python

Vielen Dank im Voraus. Dieser ist der Code:

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

Dies ist de Tray in MAC OS X (der Stern von GTK +):

This is system tray in MAC OS X

Dies ist das Fach in WINDOWS (der Stern von GTK +):

This is the tray in WINDOWS

auf Fenster kein Problem, Menü wird angezeigt, wenn Sie auf das Symbol klicken, aber in Mac OX, icos ist s howed aber Menü wird nicht angezeigt.

Was ist das Problem mit dem Code?

+0

Was meinst du mit "Statusleiste"? Die Symbole in der Windows-Taskleiste des Systems? Da dieses Verhalten nur in Windows besteht, haben Sie keine Symbole mehr im System-Tray auf Gnome (3.4+). Vielleicht sprechen Sie über das Symbol der Anwendung? – halflings

+0

Sternsymbol auf oberen Bildern – ManuParra

+0

Hey, hast du irgendeine Lösung gefunden? Zum Hinzufügen eines Anzeigesymbols unter OSX mit Python Gtk (oder PyGObject/Gtk + 3). –

Antwort

-3

Kurze Antwort: Ja!

Qt verwaltet die Integration der Statussymbole in alle kompatiblen Betriebssysteme.

Sie müssen nur die QSystemTrayIcon Klasse verwenden, um dies zu tun.

Die Klasse QSystemTrayIcon stellt ein Symbol für eine Anwendung in der Taskleiste bereit. Moderne Betriebssysteme stellen in der Regel einen speziellen Bereich auf dem Desktop bereit, der als Taskleiste oder Infobereich bezeichnet wird, in dem Anwendungen mit langer Laufzeit Symbole und Kurznachrichten anzeigen können.

Weitere Informationen über die Qt Documentation.

+0

Aber ich möchte eine kommerzielle Anwendung, und QT ist nicht frei, ist das wahr ?. Es gibt GPL Qt-Bibliothek, die ich für meine Anwendung verwenden kann, und ich habe diese Einschränkung nicht? – ManuParra

+0

Qt ist LGPL. So können Sie es frei für eine kommerzielle App verwenden. Weitere Informationen zu dieser SO Frage: http://StackOverflow.com/questions/352896/qt-commercial-licenses – halflings

+0

Ok, aber nicht PyQt stattdessen pyside – ManuParra

-6

Es ist eine Vertiefung Fehler auf der rechten Maustaste Attribut, und auch müssen Sie enthalten:

/usr/bin/python

-- Programmierung: utf-8 --

am Anfang des Skripts.

+2

Ich denke, es hat nichts mit der Frage zu tun – carpinchosaurio