Pregunta

Tengo una aplicación GUI de python en el funcionamiento, que pretendo usar tanto en Windows como en Mac. La documentación en Tkinter no es la mejor, y google-fu me ha fallado.

En resumen, estoy haciendo:

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 comento la línea create_bitmap, la aplicación dibuja bien. Si vuelvo a comentarlo, aparece el siguiente error:

_tkinter.TclError: opción desconocida " -image "

Que es impar. Tkinter está bien, de acuerdo con las pruebas de python (es decir, importar _tkinter, Tkinter y hacer Tk () ). Desde entonces instalé PIL en mi configuración de Windows (XP SP3, Python 2.6) imaginando que estaba haciendo algo de trabajo pesado en un nivel bajo. No parece ser; Todavía recibo el error mencionado anteriormente.

El seguimiento de pila completo, excluyendo el código que ya he pegado, es:

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

¿Alguien puede arrojar alguna luz?

¿Fue útil?

Solución

Tk tiene dos tipos de gráficos, mapa de bits e imagen. Las imágenes vienen en dos sabores, bitmap y foto. Los mapas de bits y las imágenes de tipo mapa de bits no son lo mismo, lo que genera confusión en los documentos. PhotoImage crea una imagen de tipo foto y necesita un objeto de imagen en el lienzo, por lo que la solución es, como ya concluyó, usar create_image.

Otros consejos

Respuesta corta: No use create_bitmap cuando quiera usar create_image.

El método create_bitmap () no tiene un argumento image ; tiene un bitmap en su lugar.

El error que obtienes proviene del hecho de que en Tkinter, un intérprete de Tcl se está ejecutando incrustado en el proceso de Python, y toda la interacción de la GUI va de un lado a otro entre Python y Tcl; por lo tanto, el error que se obtiene proviene del hecho de que Tcl responde " No conozco ninguna opción de imagen en la llamada .create_bitmap " ;.

En cualquier caso, como dijo Jeff, es probable que desee el método create_image .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top