Der Kern der Sache ist, was mache ich falsch im folgenden Codeausschnitt?Wie kann ich ein Bild in Python 3 mit tkinter/ttk anzeigen?
from tkinter import *
from tkinter.ttk import *
root = Tk()
myButton = Button(root)
myImage = PhotoImage(myButton, file='myPicture.gif')
myButton.image = myImage
myButton.configure(image=myImage)
root.mainloop()
Die Fehlermeldung, die ich von idle3 ist wie folgt:
>>>
Traceback (most recent call last):
File "/home/bob/Documents/Python/tkImageTest.py", line 9, in <module>
myButton.configure(image=myImage)
File "/usr/lib/python3.2/tkinter/__init__.py", line 1196, in configure
return self._configure('configure', cnf, kw)
File "/usr/lib/python3.2/tkinter/__init__.py", line 1187, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
TypeError: __str__ returned non-string (type Button)
>>>
Diese Fehlermeldung mich stumped hat, habe ich einfach nicht verstehen, was es zu sagen versucht. Irgendwelche Ideen?
ich auch Vorschläge für Änderungen zu schätzen wissen würde ...
BTW geprüft ich habe bereits diese Referenz http://effbot.org/tkinterbook/photoimage.htm - Sie meinen Code-Schnipsel sieht sehr ähnlich sehen! – Bobble
Der Fehler scheint auf das 'myButton'-Argument zu verweisen, das an' PhotoImage() 'übergeben wurde. Ich glaube nicht, dass 'PhotoImage()' einen Verweis auf ein Widget-Objekt nimmt, so dass dies den Fehler verursachen kann. Versuchen Sie diese Zeile ohne es, wie 'MyImage = PhotoImage (file = 'myPicture.gif')' – gary
@Gary, scheint es zu tun. Ich wurde durch einige der Dokumentation (und einige andere Fehler, die ich generiert hatte) in die Irre geführt, dass das 'PhotoImage' einen expliziten Verweis auf das Hauptfenster benötigt.Nach etwas mehr findling fand ich, dass der Verweis auf entweder den root oder den Button selbst durch eine andere Konfigurationsoption im 'PhotoImage' -Konstruktor wie folgt bereitgestellt werden kann:' PhotoImage (master = myButton, file = 'myFile.gif') ', aber So wie ich es geschrieben habe, sieht es für Tkinter wie ein Name aus, der eine Zeichenkette sein soll. – Bobble