web-dev-qa-db-fra.com

Clairvoyance, rapidement et changer une image avec du code

J'ai créé le modèle d'application ubuntu par défaut en utilisant rapidement et j'essaie de savoir comment changer l'image affichée via le code.

L'image par défaut montre un logo ubuntu avec le chemin ".../media/background.png" dans la clairière.

Si j'ouvre la fenêtre des projets python (testWindow.py comme nom du projet est test) et que j'ajoute les lignes suivantes à la base de la fonction finish_initializing (ne rien changer d'autre dans les fichiers par défaut créés) ,

self.PNG = self.builder.get_object("image1")
self.PNG.set_from_file("../media/background.png")

Le programme s'exécute mais au lieu du logo ubuntu, la petite icône de fichier manquant s'affiche. Cependant aucun message d'erreur ne s'affiche dans le terminal et change le fichier png en un autre png, ou le déplace dans le même répertoire que le fichier python (en changeant le fichier des secondes lignes en "background.png") donne le même problème. Je peux utiliser la fonction clear () pour supprimer l'image avec succès mais je fais clairement quelque chose de mal et je n'arrive pas à avancer dans la documentation du widget d'image.

Dans le cas où cela aiderait à savoir ce que je vise à faire, j'essaie de créer un programme de carte flash simple, affichant un caractère japonais et demandant à l'utilisateur d'entrer la prononciation correcte et d'afficher une autre image d'un nouveau caractère si l'utilisateur est réussi.

Merci pour toute aide que vous pouvez apporter!

2
wnaftw

Le chemin que vous donnez set_from_file est relatif au fichier glade mais pas au fichier python. Il est préférable d'utiliser de toute façon des chemins complets car l'utilisation de chemins relatifs finit souvent par avoir des problèmes lorsque vous exécutez l'application installée. Fournit rapidement un fichier Nice fonction d'assistance pour vous donner le chemin complet d'un fichier trouvé dans le data/ dossier. Essayer:

from test_lib.testconfig import get_data_file

[....]   

    self.image = self.builder.get_object("image1")
    self.background = get_data_file("media/background.png")
    self.image.set_from_file(self.background)
1
andrewsomething