说实话,用Python写界面这事,一直挺让人头大的。Tkinter吧,丑得不想给用户看;PyQt倒是强大,但授权和体积又让人纠结;Kivy么……反正我是没搞明白。
前阵子有个朋友跟我说,你试试DearPyGui。我一看,好家伙,这玩意儿有点东西。
它到底牛在哪?
先给你一个最直观的感受——这框架跑起来跟开了挂一样,能同时显示上百万个数据点,而且每秒60帧,你想缩放拖拽它都不带卡的。为啥?因为它后面的渲染全靠GPU,跟那些基于CPU硬画的框架根本不是一个物种。
你可能想问:这不就是个画图工具吗?不不不,它除了画图,还有节点编辑器(对,就那种做特效节点、流程图的)、自定义画布(搞点2D小游戏都行),主题皮肤也是想调成啥样就啥样。
核心就是一个字:快。两个额外的字:好看。

装起来费劲吗?
一点都不费劲。前提是你的Python得是3.8以上的64位版本。
打开终端,一行搞定:
pip install dearpygui
或者如果你习惯用pip3:
pip3 install dearpygui
装完就能跑,没有那些乱七八糟的依赖冲突。
写一个窗口得多少代码?
大概……十来行吧。你看这个例子:
import dearpygui.dearpygui as dpgdefsave_callback():print("保存按钮被点了")dpg.create_context()dpg.create_viewport()dpg.setup_dearpygui()with dpg.window(label="示例窗口"): dpg.add_text("Hello 世界") dpg.add_button(label="保存", callback=save_callback) dpg.add_input_text(label="输入框") dpg.add_slider_float(label="滑块")dpg.show_viewport()dpg.start_dearpygui()dpg.destroy_context()
跑起来你就能看到一个像模像样的窗口,有文字、按钮、输入框、滑块。按钮点下去还能触发回调——这跟其它框架没啥区别,但背后运行的效率可差远了。
它到底是什么来头?
DearPyGui底层基于Dear ImGui——没错,就是游戏圈和图形工具圈里那个鼎鼎大名的即时模式GUI库。再加上ImPlot(画图)和imnodes(节点),整个技术栈非常硬核。
它支持的平台也不少:
不管你是写数据分析工具、参数调节面板、还是小型游戏编辑器,它都能扛得住。
想看看它到底能干啥?
这框架自带一个完整的demo,跑一下你就全明白了:
python -m dearpygui.demo
相信我,这demo里展示的控件和功能,比你想象的要多得多。而且它的Python代码是开源的,你完全可以把demo里的代码复制出来,改吧改吧就成了自己的应用。
说点掏心窝的话
我现在写一些小工具,只要是涉及到实时数据监控、频繁交互、或者需要好看一点的效果,基本都会优先考虑DearPyGui。它不像Electron那样动不动几百兆,也不像Tkinter那样怎么看怎么像上世纪的产物。
当然,它也不是没有缺点。比如文档还在完善中,有些高级用法需要去翻示例代码或者去Discord群里问。但考虑到它还在快速迭代(MIT协议,随便用),我觉得这些都不是事儿。
项目地址:https://github.com/hoffstadt/DearPyGui