def finalSave(self, name, description): self.savesDB = saves.Database() if name.get() != '': try: if self.sim_type == 'a': self.saveData = [name.get(), description.get(1.0, 'end'), self.sim_objects[0], [self.dataMerge[0], self.dataMerge[4], self.functions[0].convert_to_string(), self.functions[1].convert_to_string()]] elif self.sim_type == 'c': for obj in self.sim_objects: obj.position[0] = obj.position[0]/px_m self.saveData = [name.get(), description.get(1.0, 'end'), self.sim_objects, [self.dataMerge[0], self.dataMerge[1], self.dataMerge[2], self.dataMerge[3], self.dataMerge[4], self.dataMerge[5], self.dataMerge[6], self.dataMerge[7], self.dataMerge[8]]] self.savesDB.save(self.sim_type, self.saveData) self.savesDB.finish() self.parent.newScreen(self.saveScreen, 'b') except Exception as err: self.error = menus.ErrorScreen('Your input was not understood, please try again.\n\n' + str(err)) else: self.error = menus.ErrorScreen('You have not given a name for the save.')
def newScreen(self, old, option): if option == 'p': self.begin(old, option, [], []) elif option == 'e': self.exitCheck = menus.ErrorScreen( 'Are you sure you want to quit?', 'e', self) else: old.discard() if option == 'b': m = menus.MainMenu(window, self) m.create() if option == 'l': self.simulationDB = saves.Database() self.saveData = self.simulationDB.load_for_menu() load_menu = menus.LoadMenu('Saved Simulations', window, self.saveData, self) load_menu.create() load_menu.updateDesc() if option == 'c': collisions_menu = menus.BaseMenu('Collisions Settings', window, 3, 6, self) collisions_menu.display(self.top1, self.bottom1, option) if option == 'a': acceleration_menu = menus.BaseMenu( 'Variable Acceleration Settings', window, 5, 4, self) acceleration_menu.display(self.top2, self.bottom2, option)
def update_cn(self, data): try: self.target.position[0] = int(data[0].get()) * px_m self.target.height = int(data[1].get()) * px_m except Exception as err: self.error = menus.ErrorScreen('Your input was not understood, please try again.\n\n' + str(err))
def new_arrow(self, canvas, data): try: self.arrow.refresh(self, self.canvas, float(data[5].get()), float(data[6].get()), [200, int(data[2].get())], float(data[3].get()), float(data[4].get()), float(data[7].get())) self.arrow.canvas.coords(self.arrow.Arrow, self.arrow.position[0], self.arrow.height - self.arrow.position[1], self.arrow.position[0] - self.arrow.length * math.cos(self.arrow.angle), self.arrow.height - (self.arrow.position[1] - self.arrow.length * math.sin(self.arrow.angle))) self.arrow.time = 0 if not self.arrow.pause: self.arrow.pause = True self.simDisplay.b_pause.config(text = 'Resume') except Exception as err: self.error = menus.ErrorScreen('Your input was not understood, please try again.\n\n' + str(err))
def run(self, data_top, data_bottom): if self.sim_type != 'p': self.sim_data = self.getData(self.sim_id, data_top, data_bottom) if self.sim_data[0] != 'e': if self.sim_type == 'c': self.simDisplay.infoBox(self.sim_objects) if self.sim_type == 'a': self.simDisplay.infoBox(self.functions) for i in range(len(self.sim_objects)): ball = self.sim_objects[i] ball.infobox = self.simDisplay.itemBoxes ball.timeLabel = self.simDisplay.l_time ball.play() if self.sim_objects[0].pause: self.simDisplay.b_pause.config(text = 'Resume') else: self.error = menus.ErrorScreen('Your input was not understood, please try again.\n\n' + str(self.sim_data[1])) self.parent.newScreen(self.simDisplay, 'b') else: self.simDisplay.drawInputs(projectiles_input) self.target = Target(self.canvas, self.window, 'red', 200, 50, [600, 0]) self.target.play() self.arrow = Arrow(self, self.canvas, 0, 0, [200, -5000], 1, 0, 0) self.arrow.infobox = self.simDisplay.infoBox([]) self.arrow.timeLabel = self.simDisplay.l_time self.arrow.play() self.sim_objects = [self.arrow, self.target] if self.arrow.pause: self.simDisplay.b_pause.config(text = 'Resume')