class GraphWindow(Toplevel): def __init__(self, parent=None, title=None, **kwargs): Toplevel.__init__(self, parent) if title != None: self.title(title) self.parent = parent self.paned_parent = PanedWindow(self) self.graph_frame = None if 'plot' in kwargs: if 'df' in kwargs: if 'plot_title' in kwargs: if 'y_label' in kwargs: self.graph_frame = GraphFrame(self, self.paned_parent, plot=kwargs['plot'], df=kwargs['df'], plot_title=kwargs['plot_title'], y_label=kwargs['y_label'], log_filename=kwargs['log_filename']) else: self.graph_frame = GraphFrame(self, self.paned_parent, plot=kwargs['plot'], df=kwargs['df'], plot_title=kwargs['plot_title'], log_filename=kwargs['log_filename']) else: self.graph_frame = GraphFrame(self, self.paned_parent, plot=kwargs['plot'], df=kwargs['df'], log_filename=kwargs['log_filename']) self.protocol('WM_DELETE_WINDOW', self.on_close) # NOTE: Keep the window from being resized because child widgets don't seem to fit properly #self.resizable(width=False, height=False) self.bind('<Configure>', self.on_resize) def set_grid(self): #self.grid() self.paned_parent.pack(expand=True, fill=Tkinter.BOTH) if self.graph_frame != None: self.graph_frame.set_grid() def unset_grid(self): #self.grid_forget() self.paned_parent.pack_forget() if self.graph_frame != None: self.graph_frame.unset_grid() def on_close(self): self.parent.notify_of_close(self) self.withdraw() self.destroy() def on_resize(self, event): #print 'In on_resize' if isinstance(event.widget, Toplevel): #print 'Resizing window' self.unset_grid() self.set_grid() self.update()