def stop_dpg(): global visualiser_showing global is_dearpygui_running dpg.stop_dearpygui() visualiser_showing = False is_dearpygui_running = False
def interact(self, shell, keyboard_thread): event_handler = RerunSceneHandler(self.queue) file_observer = Observer() file_observer.schedule(event_handler, config["input_file"], recursive=True) file_observer.start() self.quit_interaction = False keyboard_thread_needs_join = shell.pt_app is not None assert self.queue.qsize() == 0 last_time = time.time() while not (self.renderer.window.is_closing or self.quit_interaction): if not self.queue.empty(): tup = self.queue.get_nowait() if tup[0].startswith("rerun"): # Intentionally skip calling join() on the file thread to save time. if not tup[0].endswith("keyboard"): if shell.pt_app: shell.pt_app.app.exit(exception=EOFError) file_observer.unschedule_all() raise RerunSceneException keyboard_thread.join() kwargs = tup[2] if "from_animation_number" in kwargs: config["from_animation_number"] = kwargs[ "from_animation_number" ] # # TODO: This option only makes sense if interactive_embed() is run at the # # end of a scene by default. # if "upto_animation_number" in kwargs: # config["upto_animation_number"] = kwargs[ # "upto_animation_number" # ] keyboard_thread.join() file_observer.unschedule_all() raise RerunSceneException elif tup[0].startswith("exit"): # Intentionally skip calling join() on the file thread to save time. if not tup[0].endswith("keyboard") and shell.pt_app: shell.pt_app.app.exit(exception=EOFError) keyboard_thread.join() # Remove exit_keyboard from the queue if necessary. while self.queue.qsize() > 0: self.queue.get() keyboard_thread_needs_join = False break else: method, args, kwargs = tup getattr(self, method)(*args, **kwargs) else: self.renderer.animation_start_time = 0 dt = time.time() - last_time last_time = time.time() self.renderer.render(self, dt, self.moving_mobjects) self.update_mobjects(dt) self.update_meshes(dt) self.update_self(dt) # Join the keyboard thread if necessary. if shell is not None and keyboard_thread_needs_join: shell.pt_app.app.exit(exception=EOFError) keyboard_thread.join() # Remove exit_keyboard from the queue if necessary. while self.queue.qsize() > 0: self.queue.get() file_observer.stop() file_observer.join() if self.dearpygui_imported and config["enable_gui"]: dpg.stop_dearpygui() if self.renderer.window.is_closing: self.renderer.window.destroy()
def handle_sigint(*args): dpg.stop_dearpygui()
def tearDown(self): dpg.stop_dearpygui() dpg.destroy_context()
def tearDown(self): dpg.stop_dearpygui() dpg.cleanup_dearpygui()
def stop_gui() -> None: """Stop the GUI engine and exit the main window.""" dpgcore.stop_dearpygui()