Ajout d’une icône de programme dans Python GTK

Je sais que c’est très simple, utilisez simplement la commande self.set_icon_from_file("icon.png") , cependant mon programme n’affiche toujours pas l’icône. Je me suis assuré que icon.png se trouve dans le même répertoire de travail que le fichier Python. J’ai aussi essayé de donner le chemin complet du fichier, mais cela n’affiche toujours pas l’icône.

J’utilise Ubuntu 10.10 si cela aide et en utilisant Python V2.6. J’utilise le concepteur d’interface Glade pour concevoir l’interface graphique. Cependant, j’ai essayé de configurer l’icône à la fois en utilisant Glade et en utilisant la commande ci-dessus.

J’espère avoir fourni suffisamment d’informations.

EDIT: J’ai l’icône de statut pour travailler dans mon programme. Cependant dans la question je voulais dire l’icône du programme affichée dans la barre des tâches et aussi sur le côté gauche de la barre d’application .

Je me suis assuré que l’icône.png se trouve dans le même répertoire de travail du fichier python.

Cela peut être votre problème – les chemins sont recherchés par rapport au répertoire de travail de l’ interpréteur Python, pas au fichier contenant le code. Je me retrouve souvent à définir une fonction comme:

 def get_resource_path(rel_path): dir_of_py_file = os.path.dirname(__file__) rel_path_to_resource = os.path.join(dir_of_py_file, rel_path) abs_path_to_resource = os.path.abspath(rel_path_to_resource) return abs_path_to_resource 

Le mien n’est pas vraiment si verbeux, mais j’espère que les noms des variables expliquent clairement ce qui se passe. De plus, obtenir le chemin d’access absolu n’est pas ssortingctement nécessaire, mais peut vous aider si vous devez déboguer.

Alors vous pouvez juste faire:

 self.set_icon_from_file(get_resource_path("icon.png")) 

Mise à jour: Voici un programme de démonstration. “icon.png” se trouve dans le même répertoire que ce script et je l’exécute en utilisant ./gtktest.py . Je vois l’icône en haut à gauche (place standard pour mon thème). icon.png est juste une forme dessinée dans Inkscape et exscope sous forme de bitmap (elle fonctionne de toute façon avec le SVG d’origine).

 #!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class HelloWorld: def delete_event(self, widget, event, data=None): return False def destroy(self, widget, data=None): gtk.main_quit() def __init__(self): # create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_icon_from_file('icon.png') self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy) # Creates a new button with the label "Hello World". self.button = gtk.Button("Hello World") self.window.add(self.button) self.button.show() self.window.show() def main(self): gtk.main() if __name__ == "__main__": hello = HelloWorld() hello.main() 

Je ne suis pas sûr de l’icône que vous créez, mais essayez ce plus petit exemple d’ icône de barre des tâches PyGTK.

 #!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk # create icon object statusIcon = gtk.StatusIcon() # load it statusIcon.set_from_file("icon.ico") # show it statusIcon.set_visible(True) # and run main gtk loop gtk.main() 

Peut-être que vous venez de manquer la commande statusIcon.set_visible(True)

Pour les icons standard, utilisez des articles en stock et trouvez des icons adaptées à vos besoins. de cette façon

  • Vous n’avez pas à emballer des icons avec votre programme
  • Les icons changent selon le thème de l’utilisateur et se fondent bien dans son environnement.

pour pyGTK:

 gtk.icon_theme_get_default().load_icon("folder-open", 128, 0)