插件的基本格式¶
插件存放在 TaoLiSystem/plugins 文件夹下,一个插件基本构成如下:
插件文件夹名称
│ __init__.json
└─ __init__.py
插件文件夹名称 – 插件的文件夹名称,不能包含空格。
__init__.json – 插件的配置文件,用于介绍和配置插件。
__init__.py – 插件的代码加载文件,系统会调用此文件。
插件的配置文件¶
配置文件 __init__.json 是一个 JSON 格式的文件,其基本内容如下:
{"name": "你好世界", "brief": "Hello world", "author": "Yishang", "version": "1.0.0", "description": "这是一个示例插件,你可以模仿这个插件来达成一些功能", "ico_bin": "ico.bin", "ico_pos": 0}
name
– 插件的名称brief
– 插件的简短介绍,显示在插件页面下方author
– 插件的开发者version
– 插件的版本description
– 插件的详细介绍ico_bin
– 插件的图标存放文件,如果为空则不显示图标ico_pos
– 插件的图标存放文件中图标的位置,如果为空则不显示图标,如果为整数型直接定位,如果为字符串变量图标文件查找。
插件的开发要求¶
只需要像常规写代码一样将代码写入 __init__.py 中即可,但是需要注意的是 代码中不能存在死循环 ,否则将无法退出插件。设计插件时一定要考虑退出插件的操作。
此外插件里不能包含下面的代码:
if __name__ == "__main__":
pass # do something
因为插件不是被系统调用,上述判断中的代码不能执行,请直接写在判断之外。
插件的保留导入¶
插件运行结束后(退出插件的循环之后),系统会自动释放插件本身和插件导入的模块。考虑到一些插件需要后台运行,所以需要设定保留模块的方法。
插件运行结束后,系统会获取插件中的 KEEP_MODULES 变量来确认需要保留的模块,KEEP_MODULES 是个列表,列表的项为模块的名称。
比如我想要保留自身和 urequests 模块以及其依赖模块,我可以在 KEEP_MODULES
填写:
KEEP_MODULES = [__name__, "urequests", "urllib", "urllib.parse", "usocket"]
备注
模块保留时要考虑其依赖的模块,比如模块 urequests
依赖了 urllib
urllib.parse
usocket
这三个模块。
变量 KEEP_MODULES
是插件运行之后,系统才读取的,所以运行动态更新,这意味着您可以在每次插件退出之前动态决定要保留什么模块。