65 lines
2.6 KiB
Python
65 lines
2.6 KiB
Python
# pyright: reportGeneralTypeIssues=false
|
|
|
|
import dearpygui.dearpygui as dpg
|
|
|
|
import dpg_gauges as dpgg
|
|
|
|
|
|
def main() -> None:
|
|
dpg.create_context()
|
|
try:
|
|
with dpg.window(label="Grid layout", width=820, height=620):
|
|
dpg.add_text("Three-column grid: fixed column cap, automatic rows")
|
|
with dpgg.gauge_panel(label="Wide panel", width=-1, height=270), dpgg.gauge_grid(
|
|
columns=3, min_column_width=190
|
|
):
|
|
dpgg.analog_gauge(
|
|
tag="grid_rpm", label="RPM", value=4200, max_value=8000, height=190
|
|
)
|
|
dpgg.digital_gauge(
|
|
tag="grid_speed", label="Speed", value=88, unit="km/h", height=90
|
|
)
|
|
dpgg.bar_gauge(
|
|
tag="grid_boost", label="Boost", value=12.5, max_value=30, unit="psi"
|
|
)
|
|
dpgg.status_light(tag="grid_ecu", label="ECU", state=True, height=70)
|
|
dpgg.battery_gauge(tag="grid_battery", label="Battery", value=74, height=160)
|
|
|
|
dpg.add_spacer(height=8)
|
|
dpg.add_text("Narrow panel: columns=3 auto-reduces to avoid horizontal scrolling")
|
|
with dpgg.gauge_panel(label="Narrow panel", width=390, height=250), dpgg.gauge_grid(
|
|
columns=3, min_column_width=180
|
|
):
|
|
for index, value in enumerate((18, 42, 67, 91, 55), start=1):
|
|
dpgg.digital_gauge(
|
|
tag=f"narrow_{index}",
|
|
label=f"Metric {index}",
|
|
value=value,
|
|
unit="%",
|
|
height=72,
|
|
)
|
|
|
|
dpg.add_spacer(height=8)
|
|
dpg.add_text("Panels can also occupy grid cells")
|
|
with dpgg.gauge_grid(columns=2, min_column_width=240):
|
|
with dpgg.gauge_panel(label="Left cell", height=120):
|
|
dpgg.segmented_gauge(tag="left_segments", label="Load", value=70, height=80)
|
|
with dpgg.gauge_panel(label="Right cell", height=120):
|
|
dpgg.multi_value_gauge(
|
|
tag="right_values",
|
|
label="Sensors",
|
|
values={"oil": 82, "fuel": 64, "air": 31},
|
|
height=92,
|
|
)
|
|
|
|
dpg.create_viewport(title="dpg-gauges grid layout", width=860, height=660)
|
|
dpg.setup_dearpygui()
|
|
dpg.show_viewport()
|
|
dpg.start_dearpygui()
|
|
finally:
|
|
dpg.destroy_context()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|