Question

J'ai une application graphique Python dans les rouages ??que je compte utiliser sous Windows et Mac. La documentation sur Tkinter n'est pas la meilleure et google-fu m'a échoué.

En bref, je fais:

c = Canvas(
    master=frame,
    width=settings.WINDOW_SIZE[0],
    height=settings.WINDOW_SIZE[1],
    background=settings.CANVAS_COLOUR
)
file = PhotoImage(file=os.path.join('path', 'to', 'gif'))
c.create_bitmap(position, image=file)
c.pack()
root.mainloop()

Si je commente la ligne create_bitmap, l'application s'affiche correctement. Si je le commente à nouveau, j'obtiens le message d'erreur suivant:

_tkinter.TclError: option inconnue " -image "

Ce qui est étrange. Tkinter va bien, selon les tests python (c'est-à-dire, importer _tkinter, Tkinter et faire Tk () ). Depuis, j'ai installé PIL contre Windows (XP SP3, Python 2.6) en imaginant qu’il s’acquittait des tâches les plus lourdes à un niveau peu élevé. Cela ne semble pas être; J'ai toujours l'erreur susmentionnée.

Le stacktrace complet, à l'exception du code que j'ai déjà collé, est le suivant:

File "C:\Python26\lib\lib-tk\Tkinter.py", line 2153, in create_bitmap
return self._create('bitmap', args, kw)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 2147, in _create
*(args + self._options(cnf, kw))))

Quelqu'un peut-il nous éclairer?

Était-ce utile?

La solution

Tk a deux types de graphiques, bitmap et image. Les images existent en deux versions: bitmap et photo. Les bitmaps et les images de type bitmap ne sont pas la même chose, ce qui crée de la confusion dans les documents. PhotoImage crée une image de type photo et nécessite un objet image dans la zone de dessin. Par conséquent, la solution consiste, comme vous l'avez déjà conclu, à utiliser create_image.

Autres conseils

Réponse courte: N'utilisez pas create_bitmap lorsque vous souhaitez utiliser create_image.

La méthode create_bitmap () n'a pas d'argument image ; il a un argument bitmap à la place.

L'erreur que vous obtenez provient du fait que, dans Tkinter, un interpréteur Tcl est intégré au processus Python et que toutes les interactions entre interfaces graphiques vont de Python à Tcl. Ainsi, l'erreur que vous obtenez provient du fait que Tcl répond "Je ne connais aucune option -image dans l'appel .create_bitmap".

Dans tous les cas, comme Jeff l'a dit, vous voudrez probablement utiliser la méthode create_image .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top