J'ai vérifié que icon.png se trouvait dans le même répertoire de travail du fichier python.
Cela peut être votre problème - les chemins sont cherchés par rapport au répertoire de travail de l'interpréteur Python , pas le fichier contenant le code. Je me retrouve souvent la définition d'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
mine n'est pas en fait assez que bavard, mais nous espérons que les noms de variables dire clairement ce qui se passe. En outre, l'obtention du chemin absolu n'est pas strictement nécessaire, mais pourrait vous aider si vous avez besoin de déboguer.
Ensuite, 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 le lance en utilisant ./gtktest.py
. Je vois l'icône dans le coin supérieur gauche (endroit standard pour mon thème). icon.png
est simplement une forme dessinée dans Inkscape et exportée en tant que bitmap (elle fonctionne aussi avec le SVG original, de toute façon).
#!/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()
Qu'est-ce 'self'? – detly
Je lui demande de définir l'icône du programme de la fenêtre en cours en utilisant "self" – Nik