Skip to content

sherlockan/QBinder

 
 

Repository files navigation

QBinder

Python Qt 数据绑定框架 Wiki 文档


概述

todo 案例

  参考前端框架 Vue 的数据绑定概念,针对 Python Qt 框架实现更灵活的数据绑定和数据同步。
  数据绑定对于样式更新、组件数据同步的使用情况非常方便,使用者只需要关注数据的变化,降低开发成本。

使用概要

edit 案例

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
  通用场景下自动实现双向数据绑定。

应用场景

remember 案例

  自动存储和加载上次组件填写的数据。


slider 案例

  slider 最大值最小值同步检测。


todo 案例

案例代码

  这个案例是模仿 Vue 文档提供的 todo MVC 案例做的 链接
  配合 setStyleSheet 绑定样式表,实现样式动态更新。
  可以在独立环境运行。

特性

  • 利用 lambda 参数绑定数据 操作简单
  • 数据自动存储和记载
  • QEventHook 全局事件钩子
  • Python 2 & 3 兼容
  • 纯 Python 编写 兼容 DCC 软件

同步机制

  关于 QBinder 的前世今生以及 绑定的实现机制可以参阅我博客的文章 链接

About

Global Data Binding for Python Qt framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.0%
  • Other 1.0%