def show_demo(): with cxt.collapsing_header(label="Plots"): with cxt.tree_node(label="Help"): dpg.add_text("Plotting User Guide") dpg.add_text( "Left click and drag within the plot area to pan X and Y axes.", bullet=True) dpg.add_text( "Left click and drag on an axis to pan an individual axis.", bullet=True, indent=20) dpg.add_text("Scoll in the plot area to zoom both X and Y axes.", bullet=True) dpg.add_text("Scroll on an axis to zoom an individual axis.", bullet=True, indent=20) dpg.add_text("Right click and drag to box select data.", bullet=True) dpg.add_text("Hold Alt to expand box selection horizontally.", bullet=True, indent=20) dpg.add_text("Hold Shift to expand box selection vertically.", bullet=True, indent=20) dpg.add_text( "Left click while box selecting to cancel the selection.", bullet=True, indent=20) dpg.add_text("Double left click to fit all visible data.", bullet=True) dpg.add_text( "Double left click on an axis to fit the individual axis", bullet=True, indent=20) dpg.add_text("Double right click to open the plot context menu.", bullet=True) dpg.add_text("Click legend label icons to show/hide plot items.", bullet=True) dpg.add_text( "IMPORTANT: By default, anti-aliased lines are turned OFF.", bullet=True)
def show_demo(): with cxt.collapsing_header(label="Tables"): pass
def show_demo(): with cxt.collapsing_header(label="Node Editor"): pass
def show_demo(): with cxt.collapsing_header(label="Drawlists"): with cxt.group(): dpg.add_radio_button( ("Layer 1", "Layer 2", "Layer 3"), default_value="Layer 1", callback=lambda sender: _set_layer(dpg.get_value(sender))) dpg.add_listbox(("Line", "Circle"), label="Draw Item", default_value="Line", width=100, callback=_switch_group) with cxt.group(width=200) as g: global line_group line_group = g p1_input = dpg.add_input_intx(label="p1", size=2, default_value=(10, 10)) p2_input = dpg.add_input_intx(label="p2", size=2, default_value=(100, 100)) thickness_input = dpg.add_input_int(label="thickness", default_value=1) color_input = dpg.add_color_picker(label="color", default_value=(255, 255, 255, 255)) dpg.add_button(label="Add", callback=lambda: dpg.draw_line( dpg.get_value(p1_input), dpg.get_value(p2_input), thickness=dpg.get_value(thickness_input), color=dpg.get_value(color_input), parent=current_layer)) with cxt.group(show=False, width=200) as g: global circle_group circle_group = g center_input = dpg.add_input_intx(label="center", size=2, default_value=(100, 100)) radius_input = dpg.add_input_int(label="radius", default_value=20) thickness_input = dpg.add_input_int(label="thickness", default_value=1) seg_input = dpg.add_input_int(label="segments", default_value=0) color_input = dpg.add_color_picker(label="color", default_value=(255, 255, 255, 255)) fill_input = dpg.add_color_picker(label="fill", default_value=(0, 0, 0, 0), alpha_bar=True) dpg.add_button(label="Add", callback=lambda: dpg.draw_circle( dpg.get_value(center_input), dpg.get_value(radius_input), thickness=dpg.get_value(thickness_input), segments=dpg.get_value(seg_input), color=dpg.get_value(color_input), fill=dpg.get_value(fill_input), parent=current_layer)) dpg.add_same_line() with cxt.drawlist(id="drawlist_demo", width=800, height=500): global current_layer, layer_1, layer_2, layer_3 dpg.draw_rectangle((0, 0), (800, 500), color=(100, 100, 100, 250), thickness=2) layer_1 = dpg.add_draw_layer() layer_2 = dpg.add_draw_layer() layer_3 = dpg.add_draw_layer() current_layer = layer_1
def show_demo(): with cxt.collapsing_header(label="Widgets"): with cxt.tree_node(label="Basic"): with cxt.group(horizontal=True): dpg.add_button(label="Button", callback=_log) dpg.add_button(label="Button", callback=_log, small=True) dpg.add_button(label="Button", callback=_log, arrow=True) # default direction is mvDir_Up dpg.add_button(label="Button", callback=_log, arrow=True, direction=dpg.mvDir_Left) dpg.add_button(label="Button", callback=_log, arrow=True, direction=dpg.mvDir_Right) dpg.add_button(label="Button", callback=_log, arrow=True, direction=dpg.mvDir_Down) dpg.add_checkbox(label="checkbox", callback=_log) dpg.add_radio_button(("radio a", "radio b", "radio c"), callback=_log, horizontal=True) dpg.add_selectable(label="selectable", callback=_log) with cxt.group(horizontal=True) as g: for i in range(0, 7): button = dpg.add_button(label="Click", callback=_log) dpg.set_theme_style(dpg.mvThemeStyle_Button_Rounding, i * 5, item=button) dpg.set_theme_style(dpg.mvThemeStyle_Button_PaddingX, i * 3, item=button) dpg.set_theme_style(dpg.mvThemeStyle_Button_PaddingY, i * 3, item=button) dpg.set_theme_color(dpg.mvThemeCol_Button_Bg, _hsv_to_rgb(i / 7.0, 0.6, 0.6), item=button) dpg.set_theme_color(dpg.mvThemeCol_Button_Active, _hsv_to_rgb(i / 7.0, 0.8, 0.8), item=button) dpg.set_theme_color(dpg.mvThemeCol_Button_Hovered, _hsv_to_rgb(i / 7.0, 0.7, 0.7), item=button) with cxt.group(horizontal=True): dpg.add_text("Press a button: ") dpg.add_button(arrow=True, direction=dpg.mvDir_Left, callback=lambda: dpg.set_value( widget, int(dpg.get_value(widget)) - 1)) dpg.add_button(arrow=True, direction=dpg.mvDir_Right, callback=lambda: dpg.set_value( widget, int(dpg.get_value(widget)) + 1)) widget = dpg.add_text("0") widget2 = dpg.add_text("hover me") with cxt.tooltip( parent=widget2 ): # note that "parent" is the item the tooltip show's for dpg.add_text("I'm a fancy tooltip") dpg.add_separator() dpg.add_text("Value", label="Label", show_label=True) dpg.add_combo(("AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIII", "JJJJ", "KKKK"), label="combo", default_value="AAAA", callback=_log) dpg.add_input_text(label="input text", default_value="Hello, world!", callback=_log) _help("USER:\n" "Hold SHIFT or use mouse to select text.\n" "CTRL+Left/Right to word jump.\n" "CTRL+A or double-click to select all.\n" "CTRL+X,CTRL+C,CTRL+V clipboard.\n" "CTRL+Z,CTRL+Y undo/redo.\n" "ESCAPE to revert.\n\n") dpg.add_input_text(label="input text (w/ hint)", hint="enter text here", callback=_log) dpg.add_input_int(label="input int", callback=_log) dpg.add_input_float(label="input float", callback=_log) dpg.add_input_float(label="input scientific", format="%e", callback=_log) dpg.add_input_floatx(label="input floatx", callback=_log, default_value=[1, 2, 3, 4]) dpg.add_drag_int(label="drag int", callback=_log) _help("Click and drag to edit value.\n" "Hold SHIFT/ALT for faster/slower edit.\n" "Double-click or CTRL+click to input value.") dpg.add_drag_int(label="drag int 0..100", format="%d%%", callback=_log) dpg.add_drag_float(label="drag float", callback=_log) dpg.add_drag_float(label="drag small float", default_value=0.0067, format="%.06f ns", callback=_log) dpg.add_slider_int(label="slider int", max_value=3, callback=_log) _help("CTRL+click to enter value.") dpg.add_slider_float(label="slider float", max_value=1.0, format="ratio = %.3f", callback=_log) dpg.add_slider_int(label="slider angle", min_value=-360, max_value=360, format="%d deg", callback=_log) _help("Click on the colored square to open a color picker.\n" "Click and hold to use drag and drop.\n" "Right-click on the colored square to show options.\n" "CTRL+click on individual component to input value.\n") dpg.add_color_edit((102, 179, 0, 128), label="color edit 4", callback=_log, uint8=True) dpg.add_color_edit(default_value=(.5, 1, .25, .1), label="color edit 3", callback=_log, m_3component=True, uint8=True, floats=False) dpg.add_listbox( ("Apple", "Banana", "Cherry", "Kiwi", "Mango", "Orange", "Pineapple", "Strawberry", "Watermelon"), label="listbox", num_items=4, callback=_log) dpg.add_color_button(label="color button") with cxt.tree_node(label="Bullets"): dpg.add_text("Bullet point 1", bullet=True) dpg.add_text( "Bullet point 2\nbullet text can be\nOn multiple lines", bullet=True) with cxt.tree_node(label="Tree node"): dpg.add_text("Another bullet point", bullet=True) dpg.add_text("1", bullet=True) dpg.add_same_line() dpg.add_button(label="Button", small=True) with cxt.tree_node(label="Text"): with cxt.tree_node(label="Colored Text"): dpg.add_text("Pink", color=(255, 0, 255)) dpg.add_text("Yellow", color=(255, 255, 0)) with cxt.tree_node(label="Word Wrapping"): dpg.add_text( 'This text should automatically wrap on the edge of the window.The current implementation for the text wrapping follows simple rules suited for English and possibly other languages', wrap=0) dpg.add_slider_int( label="wrap width", default_value=500, max_value=1000, callback=lambda sender: dpg.configure_item( "_demo_wrap", wrap=dpg.get_value(sender))) dpg.add_text( 'The lazy dong is a good dog. This paragraph should fit within the child. Testing a 1 character word. The quick brown fox jumps over the lazy dog.', id="_demo_wrap", wrap=100) with cxt.tree_node(label="Text Input"): dpg.add_checkbox(label="readonly", callback=_config, callback_data="Multi-line Text Input") dpg.add_checkbox(label="on_enter", callback=_config, callback_data="Multi-line Text Input") with cxt.tree_node(id="Multi-line Text Input"): dpg.add_input_text( multiline=True, default_value="/*\n" " The Pentium F00F bug, shorthand for F0 0F C7 C8,\n" " the hexadecimal encoding of one offending instruction,\n" " more formally, the invalid operand with locked CMPXCHG8B\n" " instruction bug, is a design flaw in the majority of\n" " Intel Pentium, Pentium MMX, and Pentium OverDrive\n" " processors (all in the P5 microarchitecture).\n" "*/\n\n" "label:\n" "\tlock cmpxchg8b eax\n", height=300, callback=_log, tab_input=True) with cxt.tree_node(label="Filtered Text Input"): dpg.add_input_text(callback=_log, label="default") dpg.add_input_text(callback=_log, label="decimal", decimal=True) dpg.add_input_text(callback=_log, label="no blank", no_spaces=True) dpg.add_input_text(callback=_log, label="uppercase", uppercase=True) dpg.add_input_text(callback=_log, label="scientific", scientific=True) dpg.add_input_text(callback=_log, label="hexdecimal", hexadecimal=True) with cxt.tree_node(label="Password Input"): password = dpg.add_input_text(label="password", password=True, callback=_log) dpg.add_input_text(label="password (w/ hint)", password=True, hint="<password>", source=password, callback=_log) dpg.add_input_text(label="password (clear)", source=password, callback=_log) with cxt.tree_node(label="Simple Plots"): dpg.add_simple_plot( label="Frame Times", default_value=[0.6, 0.1, 1.0, 0.5, 0.92, 0.1, 0.2]) dpg.add_simple_plot(label="Histogram", default_value=(0.6, 0.1, 1.0, 0.5, 0.92, 0.1, 0.2), height=80, histogram=True, minscale=0.0) data1 = [] for i in range(0, 70): data1.append(cos(3.14 * 6 * i / 180)) dpg.add_simple_plot(label="Lines", default_value=data1, height=80) dpg.add_simple_plot(label="Histogram", default_value=data1, height=80, histogram=True) dpg.add_progress_bar(label="Progress Bar", default_value=0.78, overlay="78%") dpg.add_same_line() dpg.add_text("Progress Bar") bar = dpg.add_progress_bar(default_value=0.78, overlay="1367/1753") dpg.set_theme_color(dpg.mvThemeCol_ProgressBar_Bar, (255, 0, 0, 255), item=bar) with cxt.tree_node(label="Multi-component Widgets"): for i in range(2, 5): with cxt.group(): float_source = dpg.add_input_floatx( label=f"input float {i}", min_value=0.0, max_value=100.0, size=i) dpg.add_drag_floatx(label=f"drag float {i}", source=float_source, size=i) dpg.add_slider_floatx(label=f"slider float {i}", source=float_source, size=i) with cxt.group(): int_source = dpg.add_input_intx(label=f"input int {i}", min_value=0, max_value=100, size=i) dpg.add_drag_intx(label=f"drag int {i}", source=int_source, size=i) dpg.add_slider_intx(label=f"slider int {i}", source=int_source, size=i) dpg.add_dummy(height=10) with cxt.tree_node(label="Vertical Sliders"): dpg.add_slider_int(label=" ", default_value=1, vertical=True, max_value=5, height=160) dpg.add_same_line() with cxt.group(horizontal=True): values = [0.0, 0.60, 0.35, 0.9, 0.70, 0.20, 0.0] for i in range(0, 7): widget3 = dpg.add_slider_float(label=" ", default_value=values[i], vertical=True, max_value=1.0, height=160) dpg.set_theme_color(dpg.mvThemeCol_SliderFloat_Bg, _hsv_to_rgb(i / 7.0, 0.5, 0.5), item=widget3) dpg.set_theme_color(dpg.mvThemeCol_SliderFloat_Grab, _hsv_to_rgb(i / 7.0, 0.9, 0.9), item=widget3) dpg.set_theme_color(dpg.mvThemeCol_SliderFloat_BgActive, _hsv_to_rgb(i / 7.0, 0.7, 0.5), item=widget3) dpg.set_theme_color(dpg.mvThemeCol_SliderFloat_BgHovered, _hsv_to_rgb(i / 7.0, 0.6, 0.5), item=widget3) dpg.add_same_line() with cxt.group(): for i in range(0, 3): with cxt.group(horizontal=True): values = [0.20, 0.80, 0.40, 0.25] for j in range(0, 4): dpg.add_slider_float(label=" ", default_value=values[j], vertical=True, max_value=1.0, height=50) dpg.add_same_line() with cxt.group(horizontal=True): dpg.add_slider_float(label=" ", vertical=True, max_value=1.0, height=160, width=40) dpg.add_slider_float(label=" ", vertical=True, max_value=1.0, height=160, width=40) dpg.add_slider_float(label=" ", vertical=True, max_value=1.0, height=160, width=40) dpg.add_slider_float(label=" ", vertical=True, max_value=1.0, height=160, width=40) with cxt.tree_node(label="Time/Date Widgets"): dpg.add_time_picker(label="Time Picker", default_value={ 'hour': 14, 'min': 32, 'sec': 23 }) dpg.add_separator() with cxt.table(header_row=False): dpg.add_table_column() dpg.add_table_column() dpg.add_table_column() dpg.add_date_picker(label="Date Picker1", level=0, default_value={ 'month_day': 8, 'year': 93, 'month': 5 }) dpg.add_table_next_column() dpg.add_date_picker(label="Date Picker2", level=1, default_value={ 'month_day': 8, 'year': 93, 'month': 5 }) dpg.add_table_next_column() dpg.add_date_picker(label="Date Picker3", level=2, default_value={ 'month_day': 8, 'year': 93, 'month': 5 }) with cxt.tree_node(label="Loading Indicators"): dpg.add_loading_indicator() dpg.add_same_line() dpg.add_loading_indicator(style=1) with cxt.tree_node(label="Knobs"): with cxt.group(horizontal=True): dpg.add_knob_float(label="K1") dpg.add_knob_float(label="K2", default_value=25.0) dpg.add_knob_float(label="K3", default_value=50.0) with cxt.tree_node(label="2D/3D Sliders"): dpg.add_3d_slider(label="3D Slider", scale=0.5)
def show_demo(): _create_static_textures() _create_dynamic_textures() with cxt.collapsing_header(label="Textures & Images"): with cxt.tree_node(label="Help"): dpg.add_separator() dpg.add_text("ABOUT TEXTURES:") dpg.add_text("Textures are buffers of RGBA data.", bullet=True, indent=20) dpg.add_text("Textures are used by 'image based' widgets:", bullet=True, indent=20) dpg.add_text("add_image", bullet=True, indent=50) dpg.add_text("add_image_button", bullet=True, indent=50) dpg.add_text("draw_image", bullet=True, indent=50) dpg.add_text("add_image_series", bullet=True, indent=50) dpg.add_text("Textures are themselves widgets.", bullet=True, indent=20) dpg.add_text( "Textures must be a child of a texture container widget.", bullet=True, indent=20) dpg.add_text( "Textures can be either static or dynamic (see following sections).", bullet=True, indent=20) dpg.add_separator() dpg.add_text("PROGRAMMER GUIDE:") dpg.add_text( "'image based' widgets hold a reference to a texture widget.", bullet=True, indent=20) dpg.add_text( "Deleting the texture widget will not affect widget's using it.", bullet=True, indent=50) dpg.add_text( "Textures are only free'd from the GPU when the reference count reaches 0.", bullet=True, indent=50) dpg.add_text( "The texture container widget is a root (has no parent).", bullet=True, indent=20) dpg.add_text("The texture container widget is hidden by default.", bullet=True, indent=20) dpg.add_text( "'Showing' it, opens a manager to inspect the textures within.", bullet=True, indent=50) dpg.add_same_line() dpg.add_button(label="Press Here", small=True, callback=lambda: dpg.configure_item( demo_texture_container, show=True)) dpg.add_separator() with cxt.tree_node(label="Static Textures"): dpg.add_separator() dpg.add_text("ABOUT STATIC TEXTURES:") dpg.add_text("Can NOT be modified after creation.", bullet=True, indent=20) dpg.add_text("Can be loaded from a file using the 'file' keyword.", bullet=True, indent=20) dpg.add_separator() with cxt.group(horizontal=True): with cxt.group(): dpg.add_text("Image Button") dpg.add_image_button(demo_static_texture_1) with cxt.group(): dpg.add_text("Image") dpg.add_image(demo_static_texture_2) with cxt.group(): dpg.add_text("Image (texture size)") dpg.add_image(demo_static_texture_3) with cxt.group(): dpg.add_text("Image (2x texture size)") dpg.add_image(demo_static_texture_3, width=200, height=200) dpg.add_image("INTERNAL_DPG_FONT_ATLAS") with cxt.tree_node(label="Dynamic Textures"): dpg.add_separator() dpg.add_text("ABOUT DYNAMIC TEXTURES:") dpg.add_text("Can be modified after creation with 'set_value'.", bullet=True, indent=20) dpg.add_text( "New data must be the same dimensions as the original", bullet=True, indent=20) dpg.add_separator() with cxt.group(): dpg.add_color_picker(label="Texture 1", default_value=(255, 0, 255, 255), no_side_preview=True, alpha_bar=True, width=200, callback=_update_dynamic_textures, callback_data=1) dpg.add_text("Image Button") dpg.add_image_button(demo_dynamic_texture_1, width=100, height=100) dpg.add_same_line() with cxt.group(): dpg.add_color_picker(label="Texture 2", default_value=(255, 255, 0, 255), no_side_preview=True, alpha_bar=True, width=200, callback=_update_dynamic_textures, callback_data=2) dpg.add_text("Image") dpg.add_image(demo_dynamic_texture_2) with cxt.tree_node(label="Image Series (plots)"): plot_id = dpg.add_plot(label="Image Plot", height=400) dpg.add_image_series("INTERNAL_DPG_FONT_ATLAS", [300, 300], [400, 400], label="font atlas", parent=plot_id) dpg.add_image_series(demo_static_texture_1, [0, 0], [100, 100], label="static 1", parent=plot_id) dpg.add_image_series(demo_static_texture_2, [150, 150], [200, 200], label="static 2", parent=plot_id) dpg.add_image_series(demo_static_texture_3, [200, -150], [300, -50], label="static 3", parent=plot_id) dpg.add_image_series(demo_dynamic_texture_1, [-200, 100], [-100, 200], label="dynamic 1", parent=plot_id) dpg.add_image_series(demo_dynamic_texture_2, [-200, -100], [-150, -50], label="dynamic 2", parent=plot_id) with cxt.tree_node(label="Drawlists"): with cxt.drawlist(width=400, height=300): dpg.draw_rectangle((0, 0), (400, 300), color=(100, 100, 100, 250), thickness=2) dpg.draw_image(demo_static_texture_3, [0, 0], [100, 100]) dpg.draw_image(demo_dynamic_texture_1, [200, 100], [300, 200])
callback=lambda: dpg.show_tool("mvStyleWindow")) dpg.add_menu_item(label="Show Font Manager", callback=lambda: dpg.show_tool("mvFontManager")) dpg.add_menu_item(label="Show Item Registry", callback=lambda: dpg.show_tool("mvItemRegistry")) dpg.add_text( default_value=f'Dear PyGui says hello. ({dpg.get_dearpygui_version()})' ) dpg.add_text(default_value="This code for this demo can be found here: ") dpg.add_text( default_value= "https://github.com/hoffstadt/DearPyGui/blob/master/DearPyGui/dearpygui/demo.py" ) with cxt.collapsing_header(label="Window Options"): with cxt.table(header_row=False): dpg.add_table_column() dpg.add_table_column() dpg.add_table_column() dpg.add_checkbox(label="no_title_bar", callback=_config, callback_data=demo_id) dpg.add_checkbox(label="no_scrollbar", callback=_config, callback_data=demo_id) dpg.add_checkbox(label="menubar", default_value=True,
with cxt.menu(label="Tools"): dpg.add_menu_item(label="Show About", callback=lambda:dpg.show_tool("mvAboutWindow")) dpg.add_menu_item(label="Show Metrics", callback=lambda:dpg.show_tool("mvMetricsWindow")) dpg.add_menu_item(label="Show Documentation", callback=lambda:dpg.show_tool("mvDocWindow")) dpg.add_menu_item(label="Show Debug", callback=lambda:dpg.show_tool("mvDebugWindow")) dpg.add_menu_item(label="Show Style Editor", callback=lambda:dpg.show_tool("mvStyleWindow")) dpg.add_menu_item(label="Show Font Manager", callback=lambda:dpg.show_tool("mvFontManager")) dpg.add_menu_item(label="Show Item Registry", callback=lambda:dpg.show_tool("mvItemRegistry")) dpg.add_text(default_value=f'Dear PyGui says hello. ({dpg.get_dearpygui_version()})') dpg.add_text(default_value="This code for this demo can be found here: ") dpg.add_text(default_value="https://github.com/hoffstadt/DearPyGui/blob/master/DearPyGui/dearpygui/demo.py") with cxt.collapsing_header(label="Window Options"): with cxt.table(header_row=False): dpg.add_table_column() dpg.add_table_column() dpg.add_table_column() dpg.add_checkbox(label="no_title_bar", callback=_config, callback_data=demo_id) dpg.add_checkbox(label="no_scrollbar", callback=_config, callback_data=demo_id) dpg.add_checkbox(label="menubar", default_value=True, callback=_config, callback_data=demo_id) dpg.add_table_next_column() dpg.add_checkbox(label="no_move", callback=_config, callback_data=demo_id) dpg.add_checkbox(label="no_resize", callback=_config, callback_data=demo_id) dpg.add_checkbox(label="no_collapse", callback=_config, callback_data=demo_id)