theme — 主题贡献

注册自定义主题配色方案。

self.theme 提供主题贡献能力。Ui、Service、Data 插件均可用(贡献写入通常需要 data.write 权限,读取需要 data.read)。

方法

contribute(name, data, callback?)

注册静态主题。

self.theme.contribute("my-theme", {
    "color.primary": "#1976D2",
    "color.onPrimary": "#FFFFFF",
    "color.surface": "#FFFFFF",
    "color.onSurface": "#1C1B1F",
    "dark.color.primary": "#90CAF9",
    "dark.color.onPrimary": "#003258",
    "dark.color.surface": "#1C1B1F",
    "dark.color.onSurface": "#E6E1E5",
})

参数:

  • name (str) — 主题名称(唯一标识符)
  • data (dict) — 主题数据字典

register_runtime(name, data, callback?)

注册运行时主题(可动态更新)。

self.theme.register_runtime("dynamic-theme", {
    "color.primary": "#FF5722",
})

revoke(name, callback?)

撤销已注册的主题。

self.theme.revoke("my-theme")

参数:

  • name (str) — 主题名称

get(name, callback?)

查询已注册的主题数据。

self.theme.get("my-theme",
    lambda **cb: print(cb)
)

list(callback?)

列出所有已注册主题。

self.theme.list(
    lambda **cb: print(cb)
)

主题数据键

主题数据使用点分隔的键名。浅色模式不带前缀,深色模式使用 dark. 前缀。

说明
color.primary主色调
color.onPrimary主色调上的文字/图标颜色
color.surface表面颜色
color.onSurface表面上的文字/图标颜色
dark.color.primary深色模式主色调
dark.color.onPrimary深色模式主色调上的颜色
dark.color.surface深色模式表面颜色
dark.color.onSurface深色模式表面上的颜色

使用示例

class NordTheme(DataPlugin):
    def on_contribute(self):
        self.theme.contribute("nord", {
            "color.primary": "#5E81AC",
            "color.onPrimary": "#ECEFF4",
            "color.surface": "#ECEFF4",
            "color.onSurface": "#2E3440",
            "dark.color.primary": "#88C0D0",
            "dark.color.onPrimary": "#2E3440",
            "dark.color.surface": "#2E3440",
            "dark.color.onSurface": "#ECEFF4",
        })


plugin = NordTheme()
plugin.run_once()

On this page