写桌面程序还死磕 Tkinter 那一套?
界面丑、逻辑乱、写起来还费劲。今天介绍个狠角色——DearPyGui,一个号称“为Python带来即时模式GUI”的库,颜值能打,性能还猛,专治各种界面开发不爽。
🚀 开箱即用,一个窗口就这么简单
废话少说,先把框架搭起来。DearPyGui 的逻辑很直白:创建上下文、创建视窗、启动。
下面这几行代码,直接给你蹦出一个干干净净的主窗口,什么初始化、消息循环,它全包了,你就只管往里面填东西。
import dearpygui.dearpygui as dpg
dpg.create_context()
dpg.create_viewport(title='我的第一个DGP应用', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
执行之后,屏幕上会出现一个800x600的空白窗口,标题栏显示“我的第一个DGP应用”。
背景通常是深色主题,非常简洁。
🎨 往窗口里“扔”点控件
有了画布,咱就得往上加东西。
DearPyGui 用 add_ 系列函数来创建控件,而且必须指定一个“父窗口”。
defbutton_callback():
print("按钮被按了一下!")
with dpg.window(label="主面板", width=780, height=560):
dpg.add_button(label="点我试试", callback=button_callback)
运行后,窗口里会出现一个写着“点我试试”的按钮。当你用鼠标点击它,后台的Python控制台会输出:
按钮被按了一下!
📈 玩点专业的,数据可视化走起
写工具免不了要展示数据。DearPyGui 内置了高性能的绘图组件。
下面这段代码,我们生成一组正弦波数据,然后用 add_line_series 把它画成一条线。
import math
x_data = [i * 0.1for i inrange(100)]
y_data = [math.sin(i) for i in x_data]
with dpg.window(label="数据看板"):
with dpg.plot(label="正弦波图", height=300, width=-1):
dpg.add_plot_axis(dpg.mvXAxis, label="时间")
with dpg.plot_axis(dpg.mvYAxis, label="幅度"):
dpg.add_line_series(x_data, y_data, label="y=sin(x)")
在这个“数据看板”窗口里,你会看到一张绘制完整的正弦波折线图,X轴是时间,Y轴是幅度,图表可以缩放拖动,跟专业绘图软件一样。
🧩 布局?拖拖拽拽也能整
桌面软件讲究布局。DearPyGui 提供了 group 和 table 等布局神器。
with dpg.window(label="参数设置"):
with dpg.table(header_row=False):
dpg.add_table_column()
dpg.add_table_column()
for i inrange(3):
with dpg.table_row():
dpg.add_text(f"参数{i+1}")
dpg.add_input_text(hint="输入数值")
界面上会出现一个两列的表格,共三行。
每一行左边显示“参数1”、“参数2”、“参数3”的文字,右边是一个可以输入文字的文本框,用于填写配置值。
⚔️ 它凭什么比 Tkinter 或 PyQt 更香?
相比 Tkinter 那套古董级的主题和控件,DearPyGui 默认就带着现代UI的基因,GPU 渲染,动画流畅。
和 PyQt 比起来,它最爽的就是“即时模式”,你不用去背复杂的信号槽和对象树概念,代码怎么写,界面就怎么显,特别适合写快速工具和中间件调试面板。
✍️ 最后
从零到一跑通一个带图表和交互的桌面应用,DearPyGui 也就几十行代码的事。
如果你受够了老派 GUI 库的效率,不妨试试这个新玩具。
你在用哪个 Python GUI 库?踩过什么坑?欢迎来评论区聊聊。