from Tkinter import * from FileDialog import * import string class App: def __init__(self,root,sizeX,sizeY,title): self.root = root self.sizeX,self.sizeY = sizeX,sizeY root.wm_title(title) root.wm_minsize(width=self.sizeX,height=self.sizeY) root.wm_maxsize(width=self.sizeX,height=self.sizeY) def Run(self): self.graph = Graph(self.root,self.sizeX,self.sizeY) menu = GrMenu(self.root,self.graph) class GrMenu: def __init__(self,root,graph): menu = Menu(tearoff=0) menu.file = Menu(tearoff=0) menu.add_cascade(label='File',menu=menu.file) menu.file.add_command(label='Open...',command=graph.loadData) menu.file.add_separator() menu.file.add_command(label='Quit...',command=root.destroy) root.configure(menu=menu) class Graph: def __init__(self,root,sizeX,sizeY): self.root = root self.canv = Canvas(root,relief="raised",width=sizeX,height=sizeY) self.canv.pack() self.sizeX,self.sizeY = sizeX,sizeY self.fieldX = fieldX = step = sizeX/9 self.fieldY = fieldY = sizeY/7 self.r = step/10 for i in range((sizeX-2*fieldX)/step): x = fieldX+i*step self.canv.create_line(x,sizeY-fieldY,x,fieldY,width=1) self.canv.create_text(x,sizeY-fieldY+5,text=i*step,anchor='n',font='Helvetica,10') for i in range((sizeY-2*fieldY)/step): y = sizeY-fieldY-i*step self.canv.create_line(fieldX,y,sizeX-fieldX,y,width=1) self.canv.create_text(fieldX-5,y,text=i*step,anchor='e',font='Helvetica,10') def loadData(self): fname = LoadFileDialog(self.root).go() if fname: f = open(fname,'r') self.point = [] line=f.readline() while line: self.point.append((float(string.split(line)[0]),float(string.split(line)[1]))) line=f.readline() f.close() self.showPoint() def showPoint(self): for point in self.point: x = point[0]+self.fieldX y = self.sizeY-self.fieldY-point[1] self.canv.create_oval(x-self.r,y-self.r,x+self.r,y+self.r,width=1,outline='black',fill='green',tag='point')