def run_gui(csr_csv, port): import dearpygui.dearpygui as dpg bus = RemoteClient(csr_csv=csr_csv, port=port) bus.open() def reboot_callback(): bus.regs.ctrl_reset.write(1) bus.regs.ctrl_reset.write(0) dpg.create_context() dpg.create_viewport(title="LiteX CLI GUI", max_width=800, always_on_top=True) dpg.setup_dearpygui() with dpg.window(autosize=True): dpg.add_text("Control/Status") dpg.add_button(label="Reboot", callback=reboot_callback) def filter_callback(sender, filter_str): dpg.set_value("csr_filter", filter_str) dpg.add_input_text(label="CSR Filter (inc, -exc)", callback=filter_callback) dpg.add_text("CSR Registers:") with dpg.filter_set(id="csr_filter"): def reg_callback(tag, data): for name, reg in bus.regs.__dict__.items(): if (tag == name): try: reg.write(int(data, 0)) except: pass for name, reg in bus.regs.__dict__.items(): dpg.add_input_text(indent=16, label=f"0x{reg.addr:08x} - {name}", tag=name, filter_key=name, callback=reg_callback, on_enter=True, width=200) def timer_callback(refresh=1e-1): while True: for name, reg in bus.regs.__dict__.items(): value = reg.read() dpg.set_value(item=name, value=f"0x{reg.read():x}") time.sleep(refresh) timer_thread = threading.Thread(target=timer_callback) timer_thread.start() dpg.show_viewport() dpg.start_dearpygui() dpg.destroy_context() bus.close()
def run(self, app): title = "celestine - PyPI" dpg.create_context() dpg.create_viewport(title=title, small_icon="celestine_small.ico", large_icon="celestine_large.ico", width=1920, height=1080, x_pos=256, y_pos=256, min_width=640, max_width=3840, min_height=480, max_height=2160, resizable=True, vsync=True, always_on_top=False, decorated=True, clear_color=(0, 0, 0)) with dpg.texture_registry(show=False): app.setup(self) with dpg.window(tag="primary_window"): app.view(self) dpg.setup_dearpygui() dpg.show_viewport(minimized=False, maximized=False) dpg.set_primary_window("primary_window", True) dpg.start_dearpygui() dpg.destroy_context()
def start_dpg(): """ The outside loop runs forever and blocks when the dpg.start_dearpygui() is called. When the plot_callback() calls dpg.stop_dearpygui() then it continues running forever until the visualisation_on turns on at which point the start_dearpygui is called again and this blocks :return: Nothing """ global visualisation_type global visualiser_showing global is_dearpygui_running global dpg_ids global initialised_plots is_dearpygui_running = True initialised_plots = False dpg.create_context() dpg.create_viewport(title='Visualising', width=330, height=280) with dpg.window(label="Visualisation", show=True) as dpg_ids['Visualisation']: if visualisation_type == 'Value': dpg_ids['Text'] = dpg.add_text(default_value='__start__', label='Value') dpg.set_item_width(dpg_ids['Visualisation'], 300) dpg.set_item_height(dpg_ids['Visualisation'], 250) elif visualisation_type == 'Single Pane Plot': dpg.set_viewport_width(1050) dpg.set_viewport_height(770) dpg.set_item_width(dpg_ids['Visualisation'], 1050) dpg.set_item_height(dpg_ids['Visualisation'], 770) with dpg.plot(label="Plot", height=700, width=1000, show=True, pan_button=True, fit_button=True) as dpg_ids['Plot 0']: dpg_ids['x_axis'] = dpg.add_plot_axis(dpg.mvXAxis, label="Data index") dpg_ids['y_axis'] = dpg.add_plot_axis(dpg.mvYAxis, label="Data") elif visualisation_type == 'Multi Pane Plot': dpg.set_viewport_width(1050) dpg.set_viewport_height(850) dpg.set_item_width(dpg_ids['Visualisation'], 1050) dpg.set_item_height(dpg_ids['Visualisation'], 820) dpg.set_viewport_resize_callback(on_resize_viewport) dpg.setup_dearpygui() dpg.show_viewport() visualiser_showing = True if data is not None: update_dpg_gui() dpg.start_dearpygui() dpg.destroy_context()
def run(self): # -------------------------------------------------- 01 # make sure if was already called if self.internal.has("is_run_called"): raise e.code.NotAllowed( msgs=[ f"You can run only once ..." ] ) # -------------------------------------------------- 02 # setup dpg _pyc_debug = settings.PYC_DEBUGGING dpg.create_context() dpg.configure_app(manual_callback_management=_pyc_debug) dpg.create_viewport() dpg.setup_dearpygui() # -------------------------------------------------- 03 # setup and layout _LOGGER.info(msg="Setup and layout dashboard ...") self.setup() self.layout() # -------------------------------------------------- 04 # call build and indicate build is done _LOGGER.info(msg="Building dashboard ...") self.build() self.internal.is_run_called = True # -------------------------------------------------- 05 # dpg related dpg.show_viewport() if _pyc_debug: if not internal_dpg.is_viewport_ok(): raise RuntimeError("Viewport was not created and shown.") while internal_dpg.is_dearpygui_running(): # add this extra line for callback debug # https://pythonrepo.com/repo/hoffstadt-DearPyGui-python-graphical-user-interface-applications dpg.run_callbacks(dpg.get_callback_queue()) internal_dpg.render_dearpygui_frame() else: dpg.start_dearpygui() dpg.destroy_context()
def demo(): """ Refer >>> from dearpygui import demo """ dpg.create_context() dpg.create_viewport() dpg.setup_dearpygui() _demo.show_demo() # with dpg.window(label="Dear PyGui Demo", width=800, height=800, # pos=(100, 100), tag="__demo_id"): # with dpg.collapsing_header(label="some label", default_open=True,): # dpg.add_text(default_value="Some text") dpg.show_viewport() dpg.start_dearpygui() dpg.destroy_context()
def start(self): dpg.setup_registries() dpg.setup_viewport() dpg.set_viewport_title("Simple Data Flow") node_editor = NodeEditor() with dpg.window() as main_window: with dpg.menu_bar(): with dpg.menu(label="Operations"): dpg.add_menu_item(label="Reset", callback=lambda: dpg.delete_item(node_editor.uuid, children_only=True)) with dpg.menu(label="Plugins"): for plugin in self.plugins: dpg.add_menu_item(label=plugin[0], callback=plugin[1]) with dpg.group(horizontal=True) as group: # left panel with dpg.group(id=self.left_panel): self.data_set_container.submit(self.left_panel) self.modifier_container.submit(self.left_panel) # center panel node_editor.submit(group) # right panel with dpg.group(id=self.right_panel): self.inspector_container.submit(self.right_panel) self.tool_container.submit(self.right_panel) dpg.set_primary_window(main_window, True) dpg.start_dearpygui()
def try_dpg_children(_dpg_def: DpgDef, _all_dpg_defs: t.List[DpgDef]): dpg.create_context() dpg.create_viewport() dpg.setup_dearpygui() with dpg.window(label="Dear PyGui Demo", width=800, height=800, pos=(100, 100), tag="__demo_id") as w1: _ret = [] if _dpg_def.is_container: with _dpg_def.fn() as _dpg_id: for _child_dpg_def in _all_dpg_defs: try: _child_dpg_def.fn_fake_call(parent=_dpg_id) _ret.append(_child_dpg_def) except Exception: ... dpg.show_viewport() dpg.start_dearpygui() dpg.destroy_context() return _ret
dpg.set_axis_limits(dpg.last_item(), -1, 1) # series belong to a y axis dpg.add_line_series(x_coords[:len(deltas)], deltas, label=f'{name}', parent=dpg.last_item(), id=f'{name}_deltas') log_lock = RLock() def cb_state(state_msg): with log_lock: for name, velocity in zip(state_msg.name, state_msg.velocity): if name in last_command and name in all_deltas: delta = last_command[name] - velocity all_deltas[name].append(delta) if len(all_deltas[name]) > len(x_coords): all_deltas[name] = all_deltas[name][-len(x_coords):] dpg.set_value(f'{name}_deltas', [x_coords[:len(all_deltas[name])], all_deltas[name]]) def cb_control(control_msg): with log_lock: for name, velocity in zip(control_msg.name, control_msg.velocity): last_command[name] = velocity rospy.init_node('implot_test') sub_state = rospy.Subscriber('/joint_states', JointStateMsg, callback=cb_state, queue_size=1) sub_control = rospy.Subscriber('/control', JointStateMsg, callback=cb_control, queue_size=1) dpg.start_dearpygui()
def confguirun(): dpg.start_dearpygui()
def configure_pygui(renderer, widgets, update=True): if not dearpygui_imported: raise RuntimeError( "Attempted to use DearPyGUI when it isn't imported.") if update: dpg.delete_item(window) else: dpg.setup_viewport() dpg.set_viewport_title(title=f"Manim Community v{__version__}") dpg.set_viewport_width(1015) dpg.set_viewport_height(540) def rerun_callback(sender, data): renderer.scene.queue.put(("rerun_gui", [], {})) def continue_callback(sender, data): renderer.scene.queue.put(("exit_gui", [], {})) def scene_selection_callback(sender, data): config["scene_names"] = (dpg.get_value(sender), ) renderer.scene.queue.put(("rerun_gui", [], {})) scene_classes = scene_classes_from_file(Path(config["input_file"]), full_list=True) scene_names = [scene_class.__name__ for scene_class in scene_classes] with dpg.window( id=window, label="Manim GUI", pos=[config["gui_location"][0], config["gui_location"][1]], width=1000, height=500, ): dpg.set_global_font_scale(2) dpg.add_button(label="Rerun", callback=rerun_callback) dpg.add_button(label="Continue", callback=continue_callback) dpg.add_combo( label="Selected scene", items=scene_names, callback=scene_selection_callback, default_value=config["scene_names"][0], ) dpg.add_separator() if len(widgets) != 0: with dpg.collapsing_header( label=f"{config['scene_names'][0]} widgets", default_open=True): for widget_config in widgets: widget_config_copy = widget_config.copy() name = widget_config_copy["name"] widget = widget_config_copy["widget"] if widget != "separator": del widget_config_copy["name"] del widget_config_copy["widget"] getattr(dpg, f"add_{widget}")(name, **widget_config_copy) else: dpg.add_separator() if not update: dpg.start_dearpygui()
self.show_status("Text succesfult krypteret og gemt", True) # Fortæller brugeren om det var succesfult dpg.set_value(self.writePW, "") # Tømmer brugerens inputfelt og lukker skrivevinduet dpg.hide_item(self.writeWindow) def read_text(self): # Bruger decrypt funktionen til at forsøge at dekryptere fileName.txt filen password = dpg.get_value(self.readPW) if self.decrypt(password): # Tjekker om dekryptering virkede with open(self.fileName, "r") as f: # Åbner dekryptet fil dpg.set_value(self.rwfield, f.read()) # Viser indholdet til brugeren self.delete_txt( ) # Sletter dekrypteret fil, så indholdet forbliver hemmeligt self.show_status("Fil dekrypteret succesfult!", True) dpg.set_value(self.readPW, "") # Tømmer inputfelt og lukker læsevinduets dpg.hide_item(self.readWindow) if __name__ == '__main__': # Koden kører ikke, hvis importeret. w = WordSaver() # Opretter WordSaver objekt view = prep_vp(width, height) # Forbereder viewport dpg.setup_dearpygui(viewport=view) dpg.set_primary_window(w.mainWindow, True) # Sætter hovedvinduet som hovedvindue dpg.show_viewport(view) dpg.start_dearpygui() # Starter brugerfladen
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from dearpygui import dearpygui dearpygui.add_text("Hello World") dearpygui.add_button("Save", callback="SaveCallback") dearpygui.add_input_text("string") dearpygui.add_slider_float("float") def SaveCallback(sender, data): print("Save Clicked") dearpygui.start_dearpygui()
def start_gui(*, primary_window: Window = None) -> None: """Start the GUI engine and show the main window.""" if primary_window is not None: dpgcore.start_dearpygui(primary_window=primary_window.id) else: dpgcore.start_dearpygui()