66 lines
2.6 KiB
Python
66 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("Max columns: columns=3 wraps onto new rows after every third gauge")
|
|
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("Autobreak: columns='auto' chooses columns from available width")
|
|
with (
|
|
dpgg.gauge_panel(label="Autobreak narrow panel", width=430, height=285),
|
|
dpgg.gauge_grid(columns="auto", 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()
|