figurecanvastkagg python numpy canvas tkinter tkinter-canvas

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)