#!/usr/bin/python # -*- coding: utf-8 -*- # """ Provides structured graphics interface from Tkinter package. Name: tk_canvas.py Author: Alessandro dos Santos Ferreira ( santosferreira.alessandro@gmail.com ) """ import sys if sys.version_info[0] < 3: import Tkinter as Tk else: import tkinter as Tk import matplotlib matplotlib.use('TkAgg') from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib import pylab as plt class Image(object): def __init__(self, parent, image, onclick = None): self.parent = parent self.parent.image = image fig = plt.figure(facecolor='white', edgecolor='black', linewidth=1) self._im = plt.imshow(self.parent.image) # later use a.set_data(new_data) #ax = plt.gca() #ax.set_xticklabels([]) #ax.set_yticklabels([]) # a tk.DrawingArea self._canvas = FigureCanvasTkAgg(fig, master=self.parent) self._canvas.show() self._canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) if onclick is not None: fig.canvas.mpl_connect('button_press_event', func = onclick) def refresh(self, image): if self._canvas is not None: self.parent.image = image self._im.set_data(self.parent.image) self._canvas.draw() def close(self): if self._canvas is not None: self.parent.image = None #self._im.set_data(np.zeros((0,0,3), float)) #self._canvas.draw() self._canvas.get_tk_widget().pack_forget(); self._canvas.get_tk_widget().destroy(); self._im = None self._canvas = None return True return False