Frage

Ich habe eine Python-GUI-Anwendung in der Arbeit bekommt, die ich auf Windows und Mac verwenden möge. Die Dokumentation auf Tkinter ist nicht die größte, und Google-Fu hat mich im Stich gelassen.

Kurz gesagt, ich tue:

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

Wenn ich die create_bitmap Zeile aus kommentieren, zeichnet die App gut. Wenn ich es wieder in Kommentar, bekomme ich folgende Fehlermeldung:

_tkinter.TclError: unknown option "-image"

Welche ungerade ist. Tkinter ist in Ordnung, nach den Python-Tests (dh Import _tkinter, Tkinter, und tut Tk()). Ich habe seit installiert PIL gegen meinen Windows-Setup (XP SP3, Python 2.6) vorstellt, dass es einige des schweren Hebens auf einem niedrigen Niveau tat. Es ist nicht zu sein scheint; Ich immer noch die oben genannten Fehler.

Der vollständige Stacktrace, ohne den Code, den ich bereits eingefügt haben, ist:

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

Wer in der Lage jedes Licht zu vergießen?

War es hilfreich?

Lösung

Tk hat zwei Arten von Grafiken, Bitmap und Bild. Bilder gibt es in zwei Varianten, Bitmap und Foto. Bitmaps und Bilder vom Typ Bitmap sind nicht dasselbe, was in docs zu Verwirrung führt. Photobild erzeugt ein Bild vom Typ Foto und benötigt ein Bildobjekt in der Leinwand, so dass die Lösung ist, wie Sie bereits abgeschlossen, create_image zu verwenden.

Andere Tipps

Kurze Antwort: Nicht create_bitmap verwenden, wenn Sie meinen create_image zu verwenden.

Die create_bitmap() Methode keine image Argument haben; es hat ein bitmap Argument statt.

Der Fehler kommt von der Tatsache erhalten, dass in Tkinter, ein Tcl-Interpreter ist in dem Python-Prozess eingebettet läuft, und all GUI-Interaktion geht hin und her zwischen Python und Tcl; so kommt der Fehler, den Sie aus der Tatsache erhalten, dass Tcl antwortet: „Ich kenne keine -image Option in der .create_bitmap rufen“.

Auf jeden Fall wie Jeff gesagt, wollen Sie wahrscheinlich die create_image Methode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top