Python Qt 数据绑定框架 Wiki 文档
参考前端框架 Vue 的数据绑定概念,针对 Python Qt 框架实现更灵活的数据绑定和数据同步。
数据绑定对于样式更新、组件数据同步的使用情况非常方便,使用者只需要关注数据的变化,降低开发成本。
import sys
from PySide2 import QtWidgets
from QBinder import Binder
# 构建绑定容器 & 变量
state = Binder()
state.text = "text"
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
layout = QtWidgets.QVBoxLayout()
widget.setLayout(layout)
edit = QtWidgets.QLineEdit()
label = QtWidgets.QLabel()
label2 = QtWidgets.QLabel()
# 使用 lambda 作为参数进行绑定
edit.setText(lambda:state.text)
label.setText(lambda:state.text)
label2.setText(lambda: "Exapmle Lable : %s" % state.text)
layout.addWidget(edit)
layout.addWidget(label)
layout.addWidget(label2)
widget.show()
app.exec_()
通过 lambda 传递参数配合 binder 实例进行数据绑定。
操作简单,向前兼容,可配合 ui 文件使用,适配 Python 2 & 3
通用场景下自动实现双向数据绑定。
自动存储和加载上次组件填写的数据。
slider 最大值最小值同步检测。
这个案例是模仿 Vue 文档提供的 todo MVC 案例做的 链接
配合 setStyleSheet 绑定样式表,实现样式动态更新。
可以在独立环境运行。
- 利用 lambda 参数绑定数据 操作简单
- 数据自动存储和记载
- QEventHook 全局事件钩子
- Python 2 & 3 兼容
- 纯 Python 编写 兼容 DCC 软件
关于 QBinder 的前世今生以及 绑定的实现机制可以参阅我博客的文章 链接