Pygubu 是一个用于快速开发 Python Tkinter GUI 应用程序的工具,它允许开发者通过 XML 文件 定义用户界面布局,并动态加载这些 XML 文件生成界面。这种方式可以将界面设计与业务逻辑分离,提升开发效率和可维护性。
核心功能
可视化界面设计
通过 XML 文件描述 UI 结构(按钮、输入框、窗口等),无需硬编码界面元素。
支持 Tkinter 的大部分控件(如 Button, Entry, Label, Frame 等)。
动态加载 UI
使用 pygubu.Builder 类加载 XML 文件,自动生成对应的 Tkinter 组件。
可绑定事件回调函数(如按钮点击事件)。
跨平台兼容性
基于 Tkinter,支持 Windows、macOS 和 Linux。
简化代码逻辑
避免冗长的 Tkinter 创建代码,专注于业务逻辑实现。
安装 Pygubu
pip install pygubu
如果需要图形化设计工具(可选):
pip install pygubu-designer
使用示例
1. 定义 UI(XML 文件)
创建一个名为 example.ui 的 XML 文件,定义一个简单窗口:<?xml version="1.0" encoding="UTF-8"?> <interface> <object class="tk.Tk" id="mainwindow"> <property name="title">Pygubu 示例</property> <child> <object class="ttk.Frame" id="mainframe"> <child> <object class="ttk.Button" id="mybutton"> <property name="text">点击我</property> <property name="command">on_button_click</property> </object> </child> </object> </child> </object> </interface>
2. 编写 Python 代码
import pygubu class MyApp: def __init__(self): # 创建 Builder 并加载 UI 文件 self.builder = pygubu.Builder() self.builder.add_from_file('example.ui') # 获取主窗口 self.mainwindow = self.builder.get_object('mainwindow') # 绑定事件 self.builder.connect_callbacks(self) def on_button_click(self): print("按钮被点击了!") def run(self): self.mainwindow.mainloop() if __name__ == '__main__': app = MyApp() app.run()加载 XML 并绑定事件:运行后会显示一个窗口,点击按钮会触发 on_button_click 函数。
高级功能
自定义控件 :支持继承 Tkinter 控件并注册到 Builder 中。
主题支持 :通过 ttkthemes 等库应用现代样式。
国际化 :XML 中支持变量替换,方便多语言界面。
图形化设计工具(Pygubu Designer)
安装 pygubu-designer 后,可以通过可视化工具拖拽控件生成 XML 文件:运行设计器:
pygubu-designer
拖拽控件到画布,设置属性,保存为 .ui 文件。
资源链接
官方文档:https://pygubu.readthedocs.io
GitHub 仓库:https://github.com/alejandroautalan/pygubu
示例项目:https://github.com/alejandroautalan/pygubu/tree/master/examples适用场景
快速原型开发(如小型工具、脚本界面)。
需要分离界面与逻辑的 Tkinter 项目。
教学演示:展示 XML 配置驱动的 GUI 设计模式。
如果你有具体问题(如 XML 语法、事件绑定、样式调整),可以进一步提问!网友回复