插件的基本格式

插件存放在 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 是插件运行之后,系统才读取的,所以运行动态更新,这意味着您可以在每次插件退出之前动态决定要保留什么模块。