Python: DearPyGui介绍和使用

文章目录

Dear PyGui 是一个高性能、GPU 加速的 Python GUI 框架,专为构建现代、响应迅速的图形用户界面而设计。它使用 即时模式(Immediate Mode) 的 GUI 范式(类似 ImGui),非常适合快速原型开发、科学可视化、调试工具和交互式应用。


一、核心特点

  • GPU 加速:基于 ImGui 和自定义 Vulkan/OpenGL 后端,渲染性能极高。
  • 即时模式 GUI:UI 逻辑与程序逻辑混合编写,每次帧刷新都重新构建界面,状态由用户变量控制。
  • 原生 Python 接口:无需 XML 或模板文件,全部用 Python 编写。
  • 跨平台:支持 Windows、macOS、Linux。
  • 丰富的组件:按钮、滑块、表格、绘图、3D 渲染、文件对话框、主题定制等。
  • 与 NumPy 高度兼容:特别适合科学计算和数据可视化。

二、安装

pip install dearpygui 

三、基础使用示例

1. 最简 Hello World

import dearpygui.dearpygui as dpg dpg.create_context() dpg.create_viewport(title="Hello World", width=400, height=300) dpg.setup_dearpygui()with dpg.window(label="Main Window"): dpg.add_text("Hello, Dear PyGui!") dpg.add_button(label="Click me") dpg.show_viewport() dpg.start_dearpygui() dpg.destroy_context()

2. 响应按钮点击

defbutton_callback():print("Button clicked!")with dpg.window(): dpg.add_button(label="Say Hello", callback=button_callback)

3. 动态更新文本

defupdate_text(): dpg.set_value("text_id",f"Count: {dpg.get_value('slider_id')}")with dpg.window(): dpg.add_slider_int(tag="slider_id", label="Value", default_value=0, max_value=100, callback=update_text) dpg.add_text("Count: 0", tag="text_id")

四、常用组件

组件函数
按钮dpg.add_button()
文本输入dpg.add_input_text()
滑块dpg.add_slider_float(), dpg.add_slider_int()
复选框dpg.add_checkbox()
表格dpg.add_table(), dpg.add_table_column(), dpg.add_table_row()
绘图dpg.add_plot(), dpg.add_line_series()
文件选择dpg.add_file_dialog()

五、绘图示例(Plotting)

import numpy as np x = np.linspace(0,10,100).tolist() y = np.sin(x).tolist()with dpg.window():with dpg.plot(label="Sin Wave", height=300, width=500): dpg.add_plot_axis(dpg.mvXAxis, label="x")with dpg.plot_axis(dpg.mvYAxis, label="sin(x)"): dpg.add_line_series(x, y, label="sin(x)")

六、主题与样式

dpg.bind_theme(dpg.mvTheme_Dark)# 内置暗色主题# 或自定义主题with dpg.theme()as custom_theme:with dpg.theme_component(dpg.mvButton): dpg.add_theme_color(dpg.mvThemeCol_Button,(0,150,0)) dpg.bind_theme(custom_theme)

七、适用场景

  • 科学计算参数调优界面
  • 机器学习实验控制面板
  • 实时数据监控(如传感器、仿真)
  • 游戏/图形工具原型
  • 教学演示工具

八、注意事项

  • 即时模式 ≠ 保留模式:每次 start_dearpygui() 循环都会重新执行 UI 代码,不要在 UI 构建中做耗时操作。
  • 状态管理:所有状态需由 Python 变量维护(如 dpg.get_value(tag) / dpg.set_value(tag, value))。
  • 性能优势:即使每秒更新数千个控件,依然流畅(得益于 GPU 渲染)。

九、官方资源

  • 官网:https://dearpygui.org/
  • GitHub:https://github.com/hoffstadt/DearPyGui
  • 文档:https://dearpygui.readthedocs.io/
  • 示例库:https://github.com/hoffstadt/DearPyGui/tree/master/DearPyGui/dearpygui/demo.py(运行 dpg.show_demo() 可查看)
Could not load content