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.
—
Structured data presentation with sortable columns, row highlighting, and cell-level customization for displaying tabular information. DearPyGui's table system provides efficient rendering of large datasets with interactive features.
def add_table(*, label: str = '', columns: int = '', header_row: bool = '', resizable: bool = '', sortable: bool = '', hideable: bool = '', reorderable: bool = '', context_menu_in_body: bool = '', row_background: bool = '', borders_innerH: bool = '', borders_outerH: bool = '', borders_innerV: bool = '', borders_outerV: bool = '', policy: int = '', height: int = '', freeze_rows: int = '', freeze_columns: int = '', sort_multi: bool = '', sort_tristate: bool = '', scrollX: bool = '', scrollY: bool = '', tag: Union[int, str] = '', **kwargs) -> Union[int, str]:
"""
Creates a table container for structured data display.
Parameters:
- columns (int): Number of columns
- header_row (bool): Show header row
- resizable (bool): Allow column resizing
- sortable (bool): Enable column sorting
- hideable (bool): Allow column hiding
- reorderable (bool): Allow column reordering
- context_menu_in_body (bool): Enable context menu
- row_background (bool): Alternate row colors
- borders_* (bool): Border display options
- policy (int): Sizing policy
- freeze_rows, freeze_columns (int): Frozen rows/columns
- sort_multi (bool): Multi-column sorting
- sort_tristate (bool): Three-state sorting
- scrollX, scrollY (bool): Scrolling options
Returns:
Union[int, str]: Table ID
"""
def add_table_column(*, label: str = '', init_width_or_weight: float = '', default_hide: bool = '', default_sort: bool = '', width_stretch: bool = '', width_fixed: bool = '', no_resize: bool = '', no_reorder: bool = '', no_hide: bool = '', no_clip: bool = '', no_sort: bool = '', no_sort_ascending: bool = '', no_sort_descending: bool = '', no_header_width: bool = '', prefer_sort_ascending: bool = '', prefer_sort_descending: bool = '', indent_enable: bool = '', indent_disable: bool = '', tag: Union[int, str] = '', **kwargs) -> Union[int, str]:
"""
Adds a column to a table.
Parameters:
- init_width_or_weight (float): Initial column width
- default_hide (bool): Initially hidden
- default_sort (bool): Default sort column
- width_stretch (bool): Stretch to available space
- width_fixed (bool): Fixed width
- no_resize (bool): Disable resizing
- no_reorder (bool): Disable reordering
- no_hide (bool): Cannot be hidden
- no_clip (bool): Disable content clipping
- no_sort (bool): Disable sorting
- no_sort_ascending (bool): Disable ascending sort
- no_sort_descending (bool): Disable descending sort
- no_header_width (bool): Don't use header for width
- prefer_sort_ascending (bool): Prefer ascending sort
- prefer_sort_descending (bool): Prefer descending sort
- indent_enable (bool): Enable indentation
- indent_disable (bool): Disable indentation
Returns:
Union[int, str]: Column ID
"""
def add_table_row(*, height: float = '', min_row_height: float = '', tag: Union[int, str] = '', **kwargs) -> Union[int, str]:
"""
Adds a row to a table.
Parameters:
- height (float): Row height
- min_row_height (float): Minimum row height
Returns:
Union[int, str]: Row ID
"""
def add_table_cell(*, tag: Union[int, str] = '', **kwargs) -> Union[int, str]:
"""
Adds a cell to a table row.
Returns:
Union[int, str]: Cell ID
"""def highlight_table_cell(table: Union[int, str], row: int, column: int, color: Union[List[int], Tuple[int, ...]] = '') -> None:
"""
Highlights a specific table cell.
Parameters:
- table: Table ID
- row, column (int): Cell coordinates
- color (tuple): Highlight color
"""
def highlight_table_column(table: Union[int, str], column: int, color: Union[List[int], Tuple[int, ...]] = '') -> None:
"""Highlights an entire table column."""
def highlight_table_row(table: Union[int, str], row: int, color: Union[List[int], Tuple[int, ...]] = '') -> None:
"""Highlights an entire table row."""
def unhighlight_table_cell(table: Union[int, str], row: int, column: int) -> None:
"""Removes cell highlighting."""
def unhighlight_table_column(table: Union[int, str], column: int) -> None:
"""Removes column highlighting."""
def unhighlight_table_row(table: Union[int, str], row: int) -> None:
"""Removes row highlighting."""
def is_table_cell_highlighted(table: Union[int, str], row: int, column: int) -> bool:
"""Checks if a cell is highlighted."""
def is_table_column_highlighted(table: Union[int, str], column: int) -> bool:
"""Checks if a column is highlighted."""
def is_table_row_highlighted(table: Union[int, str], row: int) -> bool:
"""Checks if a row is highlighted."""
def set_table_row_color(table: Union[int, str], row: int, color: Union[List[int], Tuple[int, ...]] = '') -> None:
"""Sets the background color for a table row."""
def unset_table_row_color(table: Union[int, str], row: int) -> None:
"""Removes row background color."""import dearpygui.dearpygui as dpg
# Sample data
data = [
["John", "Doe", 30, "Engineer"],
["Jane", "Smith", 25, "Designer"],
["Bob", "Johnson", 35, "Manager"],
["Alice", "Brown", 28, "Developer"]
]
def cell_clicked(sender, cell_data):
row, col = cell_data
print(f"Clicked cell at row {row}, column {col}")
with dpg.window(label="Table Example", width=600, height=400):
with dpg.table(header_row=True, resizable=True, sortable=True,
borders_outerH=True, borders_innerV=True,
row_background=True):
# Add columns
dpg.add_table_column(label="First Name")
dpg.add_table_column(label="Last Name")
dpg.add_table_column(label="Age", width_fixed=True, init_width_or_weight=60)
dpg.add_table_column(label="Role")
# Add data rows
for i, row_data in enumerate(data):
with dpg.table_row():
for j, cell_data in enumerate(row_data):
with dpg.table_cell():
if isinstance(cell_data, int):
dpg.add_text(str(cell_data))
else:
dpg.add_selectable(label=cell_data,
callback=cell_clicked,
user_data=(i, j))
# Table controls
dpg.add_separator()
dpg.add_button(label="Highlight Row 0",
callback=lambda: dpg.highlight_table_row("table", 0, [255, 255, 0, 100]))
dpg.add_button(label="Clear Highlights",
callback=lambda: dpg.unhighlight_table_row("table", 0))# Table flags
mvTableFlags_None: int
mvTableFlags_Resizable: int
mvTableFlags_Reorderable: int
mvTableFlags_Hideable: int
mvTableFlags_Sortable: int
mvTableFlags_NoSavedSettings: int
mvTableFlags_ContextMenuInBody: int
mvTableFlags_RowBg: int
mvTableFlags_BordersInnerH: int
mvTableFlags_BordersOuterH: int
mvTableFlags_BordersInnerV: int
mvTableFlags_BordersOuterV: int
mvTableFlags_BordersH: int
mvTableFlags_BordersV: int
mvTableFlags_BordersInner: int
mvTableFlags_BordersOuter: int
mvTableFlags_Borders: int
mvTableFlags_NoBordersInBody: int
mvTableFlags_NoBordersInBodyUntilResize: int
mvTableFlags_SizingFixedFit: int
mvTableFlags_SizingFixedSame: int
mvTableFlags_SizingStretchProp: int
mvTableFlags_SizingStretchSame: int
mvTableFlags_NoHostExtendX: int
mvTableFlags_NoHostExtendY: int
mvTableFlags_NoKeepColumnsVisible: int
mvTableFlags_PreciseWidths: int
mvTableFlags_NoClip: int
mvTableFlags_PadOuterX: int
mvTableFlags_NoPadOuterX: int
mvTableFlags_NoPadInnerX: int
mvTableFlags_ScrollX: int
mvTableFlags_ScrollY: int
mvTableFlags_SortMulti: int
mvTableFlags_SortTristate: int
# Table column flags
mvTableColumnFlags_None: int
mvTableColumnFlags_DefaultHide: int
mvTableColumnFlags_DefaultSort: int
mvTableColumnFlags_WidthStretch: int
mvTableColumnFlags_WidthFixed: int
mvTableColumnFlags_NoResize: int
mvTableColumnFlags_NoReorder: int
mvTableColumnFlags_NoHide: int
mvTableColumnFlags_NoClip: int
mvTableColumnFlags_NoSort: int
mvTableColumnFlags_NoSortAscending: int
mvTableColumnFlags_NoSortDescending: int
mvTableColumnFlags_NoHeaderWidth: int
mvTableColumnFlags_PreferSortAscending: int
mvTableColumnFlags_PreferSortDescending: int
mvTableColumnFlags_IndentEnable: int
mvTableColumnFlags_IndentDisable: int
# Table row flags
mvTableRowFlags_None: int
mvTableRowFlags_Headers: intInstall with Tessl CLI
npx tessl i tessl/pypi-dearpygui