def initUI(self): self.parent.title("ANCR-GUI") # Create left and right frames and packs them within the parent frame self.leftFrame = Frame(self.parent, bg='light blue', height=700, width=700) #light colored bg to see panel self.rightFrame = Frame(self.parent, bg="dark gray", height=700, width=400) #dark colored bg to see panel self.leftFrame.pack(side="left", fill="both", expand=1) #self.leftFrame.pack_propagate(0) self.rightFrame.pack(side="right", fill="y", expand=0) #self.rightFrame.pack_propagate(0) # Creates a scrollbar on the right frame and corresponding window which it controls self.rightSideCanvas = Canvas(self.rightFrame, height=700, width=400, bg='dark gray', highlightbackground='dark gray', highlightthickness=0) self.rightCanvasFrame = Frame(self.rightSideCanvas, bg='dark gray') self.vsb = Scrollbar(self.rightFrame, orient="vertical", command=self.rightSideCanvas.yview) self.rightSideCanvas.configure(yscrollcommand=self.vsb.set) self.vsb.pack(side="right", fill="y") self.rightSideCanvas.pack(side="left", expand=True) self.rightSideCanvas.create_window((0, 0), window=self.rightCanvasFrame, anchor="nw") self.geoCanvas = CanvasFrame( self.leftFrame, self.rightCanvasFrame, self.G, self.D) # handles creation of canvas and miniframes self.rightCanvasFrame.bind( "<Configure>", self.onFrameConfigure) # enables scrollbar functionality self.createTabs()
def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) # init main frame self.container = tk.Frame(self) self.container.pack(side="top", fill="both", expand = True) # self.container.grid(row = 0, column = 0, sticky = "nswe") self.frames = {} # init frame add to dict frame = CanvasFrame.CanvasFrame(self.container, self) self.frames[CanvasFrame] = frame frame.grid(row = 0, column = 0, sticky = "nswe") # init frame add to dict frame = StartFrame.StartFrame(self.container, self) self.frames[StartFrame] = frame frame.grid(row = 0, column = 0, sticky = "nswe") # add close window event handler self.protocol("WM_DELETE_WINDOW", self.onClossing) # load canvas self.show_frame(CanvasFrame)
def open(self, event=None): fileExt = tkFileDialog.askopenfilename() if fileExt != '': self.filename = fileExt s = str(self.filename) filename = s.split('/') self.parent.title("ANCR-GUI - " + filename[len(filename) - 1]) self.G = pickle.load(open(str(self.filename))) self.G = nx.convert_node_labels_to_integers(self.G, first_label=1) for widget in self.leftFrame.winfo_children(): widget.destroy() self.geoCanvas = CanvasFrame(self.leftFrame, self.rightCanvasFrame, self.G, self.D) self.createTabs() # redraw nodes for nodeNum in self.G.nodes(): r = 8 if 'Type' in self.G.node[nodeNum] and self.G.node[nodeNum][ 'Type'] == 'Compartment': self.geoCanvas.systemsCanvas.create_oval( self.G.node[nodeNum]['x_coord'] - r, self.G.node[nodeNum]['y_coord'] - r, self.G.node[nodeNum]['x_coord'] + r, self.G.node[nodeNum]['y_coord'] + r, fill='blue', tag='node') else: self.geoCanvas.systemsCanvas.create_oval( self.G.node[nodeNum]['x_coord'] - r, self.G.node[nodeNum]['y_coord'] - r, self.G.node[nodeNum]['x_coord'] + r, self.G.node[nodeNum]['y_coord'] + r, fill='red', tag='node') # redraw edges for startNode, endNode in self.G.edges(): edgeItem = self.geoCanvas.systemsCanvas.create_line( self.G.edge[startNode][endNode]['x1_coord'], self.G.edge[startNode][endNode]['y1_coord'], self.G.edge[startNode][endNode]['x2_coord'], self.G.edge[startNode][endNode]['y2_coord'], tag='edge') self.geoCanvas.systemsCanvas.addtag_withtag( str(startNode), edgeItem) self.geoCanvas.systemsCanvas.addtag_withtag( str(endNode), edgeItem) self.G.edge[startNode][endNode]['edgeID'] = edgeItem # reload demands self.geoCanvas.manager.systems = self.G.node[1]['systems'] for key in self.geoCanvas.manager.systems: self.geoCanvas.optionList.insert( len(self.geoCanvas.optionList) - 2, key) self.geoCanvas.dropdown.destroy() self.geoCanvas.dropdown = OptionMenu( self.geoCanvas.toolbar, self.geoCanvas.v, *self.geoCanvas.optionList, command=self.geoCanvas.newOptionMenu) self.geoCanvas.dropdown.configure(bg="light blue") self.geoCanvas.dropdown.pack(side='left') # add to log file log = datetime.now().strftime( '%Y-%m-%d %H:%M:%S') + ": Opened file: " + str(self.filename) self.geoCanvas.appendLog(log)