Пример #1
0
class simpleapp_tk(tkinter.Tk):
	def __init__(self,parent):

		
		tkinter.Tk.__init__(self,parent)
		self.parent = parent

		self.initialize()



	def initialize(self):
		#Variables and triggers
		self.runTrigger = 0
		self.world = World()
		
		self.grid()

		#Buttons
		button = tkinter.Button(self, text=u"Step", command=self.stepClick)
		button.grid(column=0, row=0, sticky = 'N')

		button = tkinter.Button(self, text=u"Auto", command=self.autoClick)
		button.grid(column=0, row=1, sticky = 'N')

		button = tkinter.Button(self, text=u"Stop", command=self.stopClick)
		button.grid(column=0, row=2, sticky = 'N')

		button = tkinter.Button(self, text=u"Reset", command=self.resetClick)
		button.grid(column=0, row=3, sticky = 'N')

		button = tkinter.Button(self, text=u"Output", command=self.outputClick)
		button.grid(column=2, row=4, sticky = 'E')

		#Label - Title
		label = tkinter.Label(self, anchor="nw", fg="black",bg="white",text="Output")
		label.grid(column=2, row=0)
		#Label - Output
		self.labelVariable = tkinter.StringVar()
		
		label = tkinter.Label(self,height="10", width = "30", textvariable=self.labelVariable,
			anchor="nw", fg="green",bg="black") 
		label.grid(column=2,row=1,rowspan=3)

		#Canvas
		self.canvas = tkinter.Canvas(width=self.world.GRID_SIZE, height=self.world.GRID_SIZE)
		self.canvas.grid(column=1,row=0,rowspan=5)
		#self.refreshCanvas()


	def stepClick(self):
		self.world.applyCurrents()
		self.world.moveDecisions()
		self.canvas.delete("all")
		for b in self.world.allBalloons:
			self.canvas.create_oval(b.getX()-self.world.COVERAGE_RADIUS,b.getY()-self.world.COVERAGE_RADIUS,b.getX()+self.world.COVERAGE_RADIUS,b.getY()+self.world.COVERAGE_RADIUS, fill="blue")
			self.canvas.create_oval(b.getX()-4,b.getY()-4,b.getX()+4,b.getY()+4, fill="red")
			self.canvas.create_line(b.getX(),b.getY(), b.getX()+b.getCurrent().getX(), b.getY()+b.getCurrent().getY(),arrow="last")
		


	def autoClick(self):
		self.runTrigger = 1
		
		while(self.runTrigger):
			self.stepClick()
			
			self.update()

		


	def stopClick(self):
		self.runTrigger = 0

	def resetClick(self):
		self.runTrigger = 0
		self.initialize()
	
	def output(self, str):
		s = '\n'
		s += str
		s += self.labelVariable.get()
		self.labelVariable.set(s)

	def outputClick(self):
		s = self.world.returnStats()
		self.output(s)