Python数据驱动UI

同学们,我的中文不太好,所以您们可能会遇到一些错误,不好意思。如果有什么不清楚的,您们可以在评论中流言。谢谢阅读!

---

大家好,今天我想介绍一下所谓《数据驱动UI》,让我们自动化从数据生成UI元素。

假如您要开发个基于插件的系统的应用,让用户开发自己的插件,扩展您应用的功能。这样一来,您怎么管理应用和插件设置文件?一个办法是让每个扩展有自己的设置文件,这是最简单的办法解决这个问题。不过更好的办法是只用一个设置文件,让每个扩展描述它将使用的设置,让主应用读取所有扩展的设置。这样一来需要标准化扩展和设置的接口,包括哪个UI元素相当于哪个设置。

今天我使用Textual UI框架来演示如何在Python中做自己的基于插件的系统。

首先,我们要想一下怎么表示插件结构。我们会开发所谓经典的插件系统:将插件放入应用程序的插件文件夹中。

标准化很重要,所以为了被主应用程序发现,每个插件入口文件需要成为main.py,而且需要有标准设置结构,比如`settings_schema`。我们这个插件有两个设置成为test1和test2。这两个元素都是选择元素。首先我们定义选项,其次给它默认值,最后我们具体说明使用哪个UI元素。

为什么要有默认值?如果我们设置文件被删除了,默认值让我们重新创建我们应用的设置文件。

我们b插件的元素是一个多选元素,它可以有多个默认值。

我们主应用的设置结构如下:

这五个元素代表了所有可能的设置类型:是或否设置,文本或数字输入,单选和多选设置。多选设置有两个元素可供选择--下拉菜单和单选按钮:

下面是我们所有的设置组合在一起:

读写设置文件

我们使用YAML文件存储设置。

from ruamel.yaml import YAML

yaml = YAML()

PATH是应用的主文件夹。

PATH = pathlib.Path(__file__).parent

下一步是构建一个设置类。这让我们给UI元素读写设置的能力。每次主应用启动时,`register_settings`函数都会检查设置文件和schema中的更改,同步更改。

因为这是一种插件架构,我们需要自动收集插件设置。这还使我们能够自动命名我们的设置。设置命名空间=插件文件夹名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值