DearPyGui is a modern, fast and powerful GUI framework for Python that provides an easy-to-use, dynamic, GPU-accelerated, cross-platform graphical user interface toolkit.
—
Organizational elements for structuring user interfaces including windows, groups, collapsing sections, tabs, menus, and child containers. These elements provide the foundation for organizing and presenting UI components in a logical hierarchy.
Primary containers for organizing interface elements.
def add_window(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', width: int = '', height: int = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', callback: Callable = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', delay_search: bool = '', tracked: bool = '', track_offset: float = '', min_size: Union[List[int], Tuple[int, ...]] = '', max_size: Union[List[int], Tuple[int, ...]] = '', menubar: bool = '', collapsed: bool = '', autosize: bool = '', no_resize: bool = '', no_title_bar: bool = '', no_move: bool = '', no_scrollbar: bool = '', no_collapse: bool = '', horizontal_scrollbar: bool = '', no_focus_on_appearing: bool = '', no_bring_to_front_on_focus: bool = '', no_close: bool = '', no_background: bool = '', modal: bool = '', popup: bool = '', no_saved_settings: bool = '', on_close: Callable = '') -> Union[int, str]:
"""
Creates a window container.
Parameters:
- min_size, max_size (tuple): Size constraints
- menubar (bool): Include menu bar
- collapsed (bool): Start collapsed
- autosize (bool): Auto-size to content
- no_resize (bool): Disable resizing
- no_title_bar (bool): Hide title bar
- no_move (bool): Disable moving
- no_scrollbar (bool): Disable scrollbars
- no_collapse (bool): Disable collapse button
- horizontal_scrollbar (bool): Enable horizontal scrolling
- no_focus_on_appearing (bool): Don't focus when shown
- no_bring_to_front_on_focus (bool): Don't bring to front
- no_close (bool): Disable close button
- no_background (bool): Transparent background
- modal (bool): Modal window
- popup (bool): Popup window
- no_saved_settings (bool): Don't save window state
- on_close (Callable): Close callback
Returns:
Union[int, str]: Window ID
"""
def add_child_window(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', width: int = '', height: int = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', drop_callback: Callable = '', show: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', delay_search: bool = '', tracked: bool = '', track_offset: float = '', border: bool = '', autosize_x: bool = '', autosize_y: bool = '', no_scrollbar: bool = '', horizontal_scrollbar: bool = '', menubar: bool = '', no_scroll_with_mouse: bool = '', flattened_navigation: bool = '', always_use_window_padding: bool = '', resizable_x: bool = '', resizable_y: bool = '', always_auto_resize: bool = '', frame_style: bool = '', auto_resize_x: bool = '', auto_resize_y: bool = '') -> Union[int, str]:
"""
Creates an embedded child window with independent scrolling.
Parameters:
- border (bool): Show border around child
- autosize_x, autosize_y (bool): Auto-size to content
- no_scrollbar (bool): Disable scrollbars
- horizontal_scrollbar (bool): Enable horizontal scrolling
- menubar (bool): Include menu bar
- no_scroll_with_mouse (bool): Disable mouse wheel scrolling
- flattened_navigation (bool): Flatten keyboard navigation
- always_use_window_padding (bool): Use window padding
- resizable_x, resizable_y (bool): Enable resizing
- always_auto_resize (bool): Always auto-resize
- frame_style (bool): Use frame styling
- auto_resize_x, auto_resize_y (bool): Auto-resize axes
Returns:
Union[int, str]: Child window ID
"""Organizational containers for logical grouping of widgets.
def add_group(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', width: int = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', delay_search: bool = '', tracked: bool = '', track_offset: float = '', horizontal: bool = '', horizontal_spacing: float = '', xoffset: float = '') -> Union[int, str]:
"""
Creates a group container for widget organization.
Parameters:
- horizontal (bool): Horizontal layout
- horizontal_spacing (float): Spacing between horizontal items
- xoffset (float): Horizontal offset
Returns:
Union[int, str]: Group ID
"""Expandable/collapsible content containers.
def add_collapsing_header(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', delay_search: bool = '', tracked: bool = '', track_offset: float = '', closable: bool = '', default_open: bool = '', open_on_double_click: bool = '', open_on_arrow: bool = '', leaf: bool = '', bullet: bool = '') -> Union[int, str]:
"""
Creates a collapsible header section.
Parameters:
- closable (bool): Show close button
- default_open (bool): Start expanded
- open_on_double_click (bool): Expand on double-click
- open_on_arrow (bool): Expand only on arrow click
- leaf (bool): No expand/collapse arrow
- bullet (bool): Show bullet point
Returns:
Union[int, str]: Header ID
"""
def add_tree_node(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', delay_search: bool = '', tracked: bool = '', track_offset: float = '', default_open: bool = '', open_on_double_click: bool = '', open_on_arrow: bool = '', leaf: bool = '', bullet: bool = '', selectable: bool = '') -> Union[int, str]:
"""
Creates a tree node for hierarchical navigation.
Parameters:
- default_open (bool): Start expanded
- open_on_double_click (bool): Expand on double-click
- open_on_arrow (bool): Expand only on arrow click
- leaf (bool): No expand/collapse functionality
- bullet (bool): Show bullet point
- selectable (bool): Allow selection
Returns:
Union[int, str]: Tree node ID
"""Tabbed interface containers for organizing related content.
def add_tab_bar(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', callback: Callable = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', delay_search: bool = '', tracked: bool = '', track_offset: float = '', reorderable: bool = '', callback_data: Any = '') -> Union[int, str]:
"""
Creates a tab bar container.
Parameters:
- reorderable (bool): Allow tab reordering
- callback_data (Any): Data passed to callback
Returns:
Union[int, str]: Tab bar ID
"""
def add_tab(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', delay_search: bool = '', tracked: bool = '', track_offset: float = '', closable: bool = '', no_tooltip: bool = '', order_mode: int = '') -> Union[int, str]:
"""
Creates a tab within a tab bar.
Parameters:
- closable (bool): Show close button
- no_tooltip (bool): Disable tooltip
- order_mode (int): Tab ordering mode
Returns:
Union[int, str]: Tab ID
"""
def add_tab_button(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', callback: Callable = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', tracked: bool = '', track_offset: float = '', no_reorder: bool = '', leading: bool = '', trailing: bool = '', no_tooltip: bool = '') -> Union[int, str]:
"""
Creates a tab button for custom tab functionality.
Parameters:
- no_reorder (bool): Disable reordering
- leading (bool): Position at start
- trailing (bool): Position at end
- no_tooltip (bool): Disable tooltip
Returns:
Union[int, str]: Tab button ID
"""Menu containers for application navigation and commands.
def add_menu_bar(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', show: bool = '', delay_search: bool = '') -> Union[int, str]:
"""
Creates a menu bar container.
Returns:
Union[int, str]: Menu bar ID
"""
def add_menu(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', enabled: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', delay_search: bool = '', tracked: bool = '', track_offset: float = '') -> Union[int, str]:
"""
Creates a dropdown menu.
Returns:
Union[int, str]: Menu ID
"""
def add_menu_item(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', payload_type: str = '', callback: Callable = '', drag_callback: Callable = '', drop_callback: Callable = '', show: bool = '', enabled: bool = '', pos: Union[List[int], Tuple[int, ...]] = '', filter_key: str = '', tracked: bool = '', track_offset: float = '', shortcut: str = '', check: bool = '', default_value: bool = '') -> Union[int, str]:
"""
Creates a menu item within a menu.
Parameters:
- shortcut (str): Keyboard shortcut text
- check (bool): Show as checkbox
- default_value (bool): Initial check state
Returns:
Union[int, str]: Menu item ID
"""
def add_viewport_menu_bar(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', show: bool = '') -> Union[int, str]:
"""
Creates a viewport-level menu bar.
Returns:
Union[int, str]: Viewport menu bar ID
"""Specialized containers for performance optimization.
def add_clipper(*, label: str = '', user_data: Any = '', use_internal_label: bool = '', tag: Union[int, str] = '', width: int = '', indent: int = '', parent: Union[int, str] = '', before: Union[int, str] = '', show: bool = '', delay_search: bool = '') -> Union[int, str]:
"""
Creates a clipper for efficient rendering of large lists.
Helper to manually clip large list of items. Increases performance
by not searching or drawing widgets outside of the clipped region.
Returns:
Union[int, str]: Clipper ID
"""import dearpygui.dearpygui as dpg
with dpg.window(label="Main Window", width=800, height=600, menubar=True):
# Menu bar
with dpg.menu_bar():
with dpg.menu(label="File"):
dpg.add_menu_item(label="New", shortcut="Ctrl+N")
dpg.add_menu_item(label="Open", shortcut="Ctrl+O")
dpg.add_menu_item(label="Save", shortcut="Ctrl+S")
with dpg.menu(label="Edit"):
dpg.add_menu_item(label="Undo", shortcut="Ctrl+Z")
dpg.add_menu_item(label="Redo", shortcut="Ctrl+Y")
# Main content area
with dpg.group(horizontal=True):
# Left sidebar
with dpg.child_window(width=200, height=500, border=True):
dpg.add_text("Sidebar")
with dpg.collapsing_header(label="Settings", default_open=True):
dpg.add_checkbox(label="Option 1")
dpg.add_checkbox(label="Option 2")
dpg.add_slider_float(label="Value")
# Main content
with dpg.child_window(width=550, height=500):
with dpg.tab_bar():
with dpg.tab(label="Tab 1"):
dpg.add_text("Content of tab 1")
dpg.add_button(label="Button 1")
with dpg.tab(label="Tab 2"):
dpg.add_text("Content of tab 2")
dpg.add_input_text(label="Input")import dearpygui.dearpygui as dpg
def item_selected(sender, value):
print(f"Selected: {dpg.get_item_label(sender)}")
with dpg.window(label="Tree Navigation", width=400, height=600):
with dpg.tree_node(label="Root Node", default_open=True):
with dpg.tree_node(label="Branch 1", default_open=True):
dpg.add_tree_node(label="Leaf 1.1", leaf=True,
selectable=True, callback=item_selected)
dpg.add_tree_node(label="Leaf 1.2", leaf=True,
selectable=True, callback=item_selected)
with dpg.tree_node(label="Branch 2"):
dpg.add_tree_node(label="Leaf 2.1", leaf=True,
selectable=True, callback=item_selected)
with dpg.tree_node(label="Sub-branch 2.2"):
dpg.add_tree_node(label="Leaf 2.2.1", leaf=True,
selectable=True, callback=item_selected)import dearpygui.dearpygui as dpg
def on_resize():
# Get viewport size
viewport_width = dpg.get_viewport_width()
viewport_height = dpg.get_viewport_height()
# Update window size
dpg.configure_item("main_window",
width=viewport_width - 20,
height=viewport_height - 40)
with dpg.window(label="Responsive Layout",
tag="main_window",
width=800, height=600,
no_close=True, no_collapse=True):
with dpg.group(horizontal=True):
# Resizable panels
with dpg.child_window(width=300, height=500,
resizable_x=True, border=True):
dpg.add_text("Left Panel")
dpg.add_text("Resize me!")
with dpg.child_window(width=450, height=500, border=True):
dpg.add_text("Right Panel")
dpg.add_text("Auto-adjusts to available space")
# Set resize callback
dpg.set_viewport_resize_callback(lambda: on_resize())import dearpygui.dearpygui as dpg
def show_modal():
dpg.configure_item("modal_window", show=True)
def close_modal():
dpg.configure_item("modal_window", show=False)
# Main window
with dpg.window(label="Main Window", width=400, height=300):
dpg.add_text("Click the button to show modal dialog")
dpg.add_button(label="Show Modal", callback=show_modal)
# Modal dialog (initially hidden)
with dpg.window(label="Modal Dialog", tag="modal_window",
modal=True, show=False, width=300, height=200,
no_resize=True, no_move=True):
dpg.add_text("This is a modal dialog")
dpg.add_separator()
with dpg.group(horizontal=True):
dpg.add_button(label="OK", callback=close_modal)
dpg.add_button(label="Cancel", callback=close_modal)Layout and container-related constants:
# Window flags
mvWindowFlags_None: int
mvWindowFlags_NoTitleBar: int
mvWindowFlags_NoResize: int
mvWindowFlags_NoMove: int
mvWindowFlags_NoScrollbar: int
mvWindowFlags_NoScrollWithMouse: int
mvWindowFlags_NoCollapse: int
mvWindowFlags_AlwaysAutoResize: int
mvWindowFlags_NoBackground: int
mvWindowFlags_NoSavedSettings: int
mvWindowFlags_NoMouseInputs: int
mvWindowFlags_MenuBar: int
mvWindowFlags_HorizontalScrollbar: int
mvWindowFlags_NoFocusOnAppearing: int
mvWindowFlags_NoBringToFrontOnFocus: int
mvWindowFlags_AlwaysVerticalScrollbar: int
mvWindowFlags_AlwaysHorizontalScrollbar: int
mvWindowFlags_AlwaysUseWindowPadding: int
mvWindowFlags_NoNavInputs: int
mvWindowFlags_NoNavFocus: int
mvWindowFlags_UnsavedDocument: int
# Tree node flags
mvTreeNodeFlags_None: int
mvTreeNodeFlags_Selected: int
mvTreeNodeFlags_Framed: int
mvTreeNodeFlags_AllowItemOverlap: int
mvTreeNodeFlags_NoTreePushOnOpen: int
mvTreeNodeFlags_NoAutoOpenOnLog: int
mvTreeNodeFlags_DefaultOpen: int
mvTreeNodeFlags_OpenOnDoubleClick: int
mvTreeNodeFlags_OpenOnArrow: int
mvTreeNodeFlags_Leaf: int
mvTreeNodeFlags_Bullet: int
mvTreeNodeFlags_FramePadding: int
mvTreeNodeFlags_SpanAvailWidth: int
mvTreeNodeFlags_SpanFullWidth: int
mvTreeNodeFlags_NavLeftJumpsBackHere: int
# Tab bar flags
mvTabBarFlags_None: int
mvTabBarFlags_Reorderable: int
mvTabBarFlags_AutoSelectNewTabs: int
mvTabBarFlags_TabListPopupButton: int
mvTabBarFlags_NoCloseWithMiddleMouseButton: int
mvTabBarFlags_NoTabListScrollingButtons: int
mvTabBarFlags_NoTooltip: int
mvTabBarFlags_FittingPolicyResizeDown: int
mvTabBarFlags_FittingPolicyScroll: int
# Tab item flags
mvTabItemFlags_None: int
mvTabItemFlags_UnsavedDocument: int
mvTabItemFlags_SetSelected: int
mvTabItemFlags_NoCloseWithMiddleMouseButton: int
mvTabItemFlags_NoPushId: int
mvTabItemFlags_NoTooltip: int
mvTabItemFlags_NoReorder: int
mvTabItemFlags_Leading: int
mvTabItemFlags_Trailing: intInstall with Tessl CLI
npx tessl i tessl/pypi-dearpygui