El quid de la cuestión es, ¿qué estoy haciendo mal en el siguiente fragmento de código?¿Cómo puedo mostrar una imagen en Python 3 usando tkinter/ttk?
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()
El mensaje de error que recibo de idle3 es el siguiente:
>>>
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)
>>>
Este mensaje de error me tiene perplejo, simplemente no entiendo lo que está tratando de decir. ¿Algunas ideas?
También agradecería sugerencias de cambios ...
BTW Ya he comprobado esta referencia http://effbot.org/tkinterbook/photoimage.htm - Verás que mi fragmento de código es muy similar. – Bobble
El error parece apuntar al argumento 'myButton' pasado a' PhotoImage() '. No creo que 'PhotoImage()' tome una referencia a un objeto widget, por lo que puede estar causando el error. Pruebe esa línea sin ella, como 'myImage = PhotoImage (file = 'myPicture.gif')' – gary
@Gary, eso parece hacerlo. Una parte de la documentación (y algunos otros errores que había generado) me indujo a pensar que 'PhotoImage' necesita una referencia explícita a la ventana raíz.Después de un poco más de violín, encontré que la referencia a la raíz o al botón en sí puede ser proporcionada por otra opción de configuración en el constructor 'PhotoImage',' PhotoImage (master = myButton, file = 'myFile.gif') ', pero tal como lo escribí, a Tkinter le parece un nombre, que se supone que es una cadena, ofc. – Bobble