python - figurecanvastkagg - Numpy Matrix to tkinter Canvas
tkinter-canvas (1)
Aquí está la solución de trabajo, ligeramente modificada para que funcione (algunas funciones se desaprobaron) y simplificarla para mantener solo la parte necesaria. Tenemos que usar Image.frombytes(...)
para leer los datos en la matriz numpy.
import Tkinter
from PIL import Image, ImageTk
import numpy
class mainWindow():
def __init__(self):
self.root = Tkinter.Tk()
self.frame = Tkinter.Frame(self.root, width=500, height=400)
self.frame.pack()
self.canvas = Tkinter.Canvas(self.frame, width=500,height=400)
self.canvas.place(x=-2,y=-2)
data=numpy.array(numpy.random.random((400,500))*100,dtype=int)
self.im=Image.frombytes(''L'', (data.shape[1],data.shape[0]), data.astype(''b'').tostring())
self.photo = ImageTk.PhotoImage(image=self.im)
self.canvas.create_image(0,0,image=self.photo,anchor=Tkinter.NW)
self.root.update()
self.root.mainloop()
mainWindow()
¿Cómo mostrar una matriz de Numpy, como un mapa de bits, en un lienzo de Tkinter? Más precisamente, ¿cómo llenar una PhotoImage
con contenido de una matriz?
photo = ImageTk.PhotoImage(...)
self.canvas.create_image(0,0,image=photo,anchor=Tkinter.NW)