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 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 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 show(self): dpg.create_context() dpg.create_viewport( title="MQTT Message Chat (me: " + self.data.myself + ")", width=MAIN_WINDOW_WIDTH, height=MAIN_WINDOW_HEIGHT, ) dpg.setup_dearpygui() self._show_gui() dpg.show_viewport() dpg.set_primary_window(PRIMARY_WINDOW, True) while dpg.is_dearpygui_running(): self.main_callback() dpg.render_dearpygui_frame() 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 prep_vp(wide: int, high: int): # Denne funktion forbereder selve vinduet, som alt det andet bliver sat ind i vp = dpg.create_viewport(title='Kodehusker v2.1', width=wide, height=high) dpg.set_viewport_maximized_box(False) # Kigger i brugerens "billeder" mappe efter en icon fil dpg.set_viewport_small_icon( f"C:\\Users\\{os.getenv('username')}\\Pictures\\darkLock.ico") # Låser viewport til bestemt størrelse dpg.set_viewport_max_width(wide) dpg.set_viewport_min_width(wide) dpg.set_viewport_max_height(high) dpg.set_viewport_min_height(high) return vp
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
import dearpygui.dearpygui as dpg import dearpygui.demo as demo from dearpygui_ext.logger import mvLogger dpg.create_context() #dpg.configure_app(manual_callback_management=True) dpg.create_viewport() dpg.setup_dearpygui() log = mvLogger() log.log("log") log.log_debug("log debug") log.log_info("log info") log.log_warning("log warning") log.log_error("log error") log.log_critical("log critical") with dpg.font_registry(): with dpg.font("../../Resources/NotoSerifCJKjp-Medium.otf", 20, tag="custom font"): dpg.add_font_range_hint(dpg.mvFontRangeHint_Default) dpg.bind_font(dpg.last_container()) demo.show_demo() # main loop dpg.show_viewport() while dpg.is_dearpygui_running(): #dpg.run_callbacks(dpg.get_callback_queue()) dpg.render_dearpygui_frame()
import dearpygui.dearpygui as dpg import cv2 as cv import numpy as np dpg.create_context() dpg.create_viewport(title='Custom Title', width=600, height=800) dpg.setup_dearpygui() vid = cv.VideoCapture(0) ret, frame = vid.read() # image size or you can get this from image shape frame_width = vid.get(cv.CAP_PROP_FRAME_WIDTH) frame_height = vid.get(cv.CAP_PROP_FRAME_HEIGHT) video_fps = vid.get(cv.CAP_PROP_FPS) print(frame_width) print(frame_height) print(video_fps) print("Frame Array:") print("Array is of type: ", type(frame)) print("No. of dimensions: ", frame.ndim) print("Shape of array: ", frame.shape) print("Size of array: ", frame.size) print("Array stores elements of type: ", frame.dtype) data = np.flip(frame, 2) # because the camera data comes in as BGR and we need RGB data = data.ravel() # flatten camera data to a 1 d stricture data = np.asfarray(data, dtype='f') # change data type to 32bit floats texture_data = np.true_divide(data, 255.0) # normalize image data to prepare for GPU
def main(port): # Should be configurable or whatever, for the other pad protocols serial = SerialProtoGF('/dev/ttyACM0') # Fetch the pad config / base settings # [panel no] = list[sensor indices] panel_mapping = get_panel_mapping(serial) trigger_values = serial.command_get_trigger_values() schmitt_values = serial.command_get_trigger_schmitt_values() dpg.create_context() dpg.create_viewport(title="ITGaz's Awesome Pad GUI", width=800, height=600, resizable=False, decorated=True) dpg.setup_dearpygui() vals_raw = [0 for x in trigger_values] with dpg.window(label="", width=800, height=600, no_resize=True, no_title_bar=True, no_move=True): dpg.add_text("LEFT:") with dpg.group(horizontal=True): for s in panel_mapping[PANEL_P1LEFT]: dpg.add_slider_float(no_input=True, vertical=False, tag=f"sensorbar_{s}", width=300) dpg.add_checkbox(tag=f"sensortriggered_{s}") dpg.add_text("DOWN:") with dpg.group(horizontal=True): for s in panel_mapping[PANEL_P1DOWN]: dpg.add_slider_float(no_input=True, vertical=False, tag=f"sensorbar_{s}", width=300) dpg.add_checkbox(tag=f"sensortriggered_{s}") dpg.add_text("UP:") with dpg.group(horizontal=True): for s in panel_mapping[PANEL_P1UP]: dpg.add_slider_float(no_input=True, vertical=False, tag=f"sensorbar_{s}", width=300) dpg.add_checkbox(tag=f"sensortriggered_{s}") dpg.add_text("RIGHT:") with dpg.group(horizontal=True): for s in panel_mapping[PANEL_P1RIGHT]: dpg.add_slider_float(no_input=True, vertical=False, tag=f"sensorbar_{s}", width=300) dpg.add_checkbox(tag=f"sensortriggered_{s}") dpg.show_viewport() # dpg.start_dearpygui() while dpg.is_dearpygui_running(): vals_raw = serial.command_get_values_raw() vals_raw_min = serial.command_get_values_raw_min() vals_filtered = serial.command_get_values_filtered() triggered = serial.command_get_triggered() for s, v in enumerate(vals_filtered): slider_tag = f"sensorbar_{s}" triggered_tag = f"sensortriggered_{s}" # slider_config = dpg.get_item_configuration(tag) slider_min = 0 slider_max = 1024 # slider_min = min(slider_config['min_value'], vals_raw_min[s]) # slider_max = max(slider_config['max_value'], vals_raw[s]) dpg.configure_item(slider_tag, min_value=slider_min, max_value=slider_max) dpg.set_value(slider_tag, v) dpg.set_value(triggered_tag, triggered[s]) # render_ui(panel_mapping, trigger_values, schmitt_values, vals_raw, vals_raw_min, vals_filtered, triggered) dpg.render_dearpygui_frame() time.sleep(0.05) dpg.destroy_context()
if num == 0: for column in row: dpg.add_table_column(label=column, parent=TABLE_TAG) else: with dpg.table_row(parent=TABLE_TAG): for column in row: dpg.add_text(column) if num % 100 == 0: dpg.set_value(value=f'Loaded so far: {num:,}', item=LOADED_FIELD) dpg.set_value(value=f'Loaded ALL', item=LOADED_FIELD) if __name__ == '__main__': # os.environ["PYDEVD_USE_CYTHON"] = "YES" dpg.create_context() dpg.create_viewport(title='CSV reader') with dpg.window( label='Read CSV', tag=MAIN_WINDOW_TAG, width=1275, height=699 ): dpg.add_text('CSV reader') dpg.add_input_text( label="Enter CSV file name", default_value='/home/tolic/Temp/10000.csv', tag=READ_FILENAME_FIELD ) dpg.add_text('Loaded so far: ', tag=LOADED_FIELD) with dpg.group(horizontal=True): dpg.add_button( label="Read CSV", tag=READ_BUTTON_TAG, callback=__read_csv_cars__ )
with dpg.tree_node(label=node, parent=parent_id, default_open=True, id=node_id): for op in operations_list: if node == op.parent_dir: colour = gu.choose_color_according_to_operations_type(node) button = dpg.add_button(label=op.name, width=200, height=30, callback=on_add_node) with dpg.theme() as theme_id: with dpg.theme_component(0): dpg.add_theme_color(dpg.mvThemeCol_Button, colour, category=dpg.mvThemeCat_Core) dpg.add_theme_style(dpg.mvStyleVar_FrameRounding, 5, category=dpg.mvThemeCat_Core) dpg.bind_item_theme(button, theme_id) return node_selector dpg.create_context() dpg.create_viewport(title='Heron', width=1700, height=1000, x_pos=350, y_pos=0) with dpg.font_registry(): # add font (set as default for entire app) default_font = dpg.add_font(os.path.join(heron_path, 'resources', 'fonts', 'SF-Pro-Rounded-Regular.ttf'), 18) with dpg.window(width=1700, height=1000, pos=[0, 0]) as main_window: dpg.set_primary_window(main_window, True) # The Start Graph button that starts all processes with dpg.group(horizontal=True): start_graph_button_id = dpg.add_button(label="Start Graph", callback=on_start_graph) end_graph_button_id = dpg.add_button(label="End Graph", callback=on_end_graph) update_control_graph_buttons(False) dpg.bind_font(default_font)
def __init__(self, parent=None): self.DataPath = None self.DataStartDate = None self.StartDate = None self.WindowPositionX = None self.WindowPositionY = None self.nBeginYear = 2019 self.nBeginMonth = 1 self.nBeginDay = 1 self.nEndYear = 1970 self.nEndMonth = 1 self.nEndDay = 1 self.LoadInitFile() self.ExecuteTime = time.localtime() # TimeStr = str(self.ExecuteTime.tm_year) + "-" + str(self.ExecuteTime.tm_mon).zfill(2) + "-" + str(self.ExecuteTime.tm_mday).zfill( # 2) + " " + str(self.ExecuteTime.tm_hour).zfill(2) + ":" + str(self.ExecuteTime.tm_min).zfill(2) + ":" + str( # self.ExecuteTime.tm_sec).zfill(2) #================= UI =================. self.count = 0 if parent: self.window_id = parent else: self.window_id = dpg.add_window(label="MyApp") # print(self.window_id) dpg.set_primary_window(self.window_id, True) # window_id = dpg.window(label="MyApp") if not dpg.is_viewport_created(): vp = dpg.create_viewport(title="MyApp", width=430, height=750, x_pos=int(self.WindowPositionX), y_pos=int(self.WindowPositionY)) dpg.setup_dearpygui(viewport=vp) dpg.show_viewport(vp) dpg.set_viewport_height(950) dpg.set_viewport_width(950) # self.slider_float = dpg.add_slider_float(label="float", parent=self.window_id, width=100) # self.ID_GetWinSize = dpg.add_button(parent=self.window_id, label="GetWinSize", callback=self.callback_getwinsize ) # dpg.add_same_line(parent=self.window_id) dpg.add_text(parent=self.window_id, default_value="Time:") dpg.add_same_line(parent=self.window_id) self.ID_TimeText = dpg.add_button(parent=self.window_id, label="0", callback=self.callback_update_enddate) self.ID_BtnBeginDate = 0 self.ID_BeginDate = None self.ID_BeginDatePicker= None self.ID_BeginYear = None self.ID_BeginMonth = None self.ID_BeginDay = None self.ID_BtnEndDate = 0 self.ID_EndDate = None self.ID_EndDatePicker = None self.ID_EndYear = None self.ID_EndMonth = None self.ID_EndDay = None self.ShowInfo() self.UIBeginDate() self.UIEndDate() # dpg.add_same_line(parent=self.window_id) # self.ID_BeginDate = dpg.add_button(label="BeginDate", parent=self.window_id, callback=self.callback_begindate) self.BeginDate = datetime.strptime(self.StartDate, "%Y-%m-%d") self.EndDate = datetime.today() self.Stock = StockTool(self.DataPath, self.BeginDate, self.EndDate) self.ID_BtnDownloadData = dpg.add_button(parent=self.window_id, label="Download", callback=self.callback_downloaddata)