TinUI配色样式基类TinUITheme

引言

在2022年的一篇笔记中,我想到了给TinUI提供一个样式配色的方式,不过当时刚开始设想TinUITheme不久,后又没有持续更新,导致一直没有把TinUI的统一配色方式讲明白。

刚开始也不存在TinUITheme,这是后话。

本文将从TinUI的样式基类开始说起。

TinUITheme类

TinUITheme是定义在TinUI核心中的一个类。

class TinUITheme:
    '''
    专门为特有样式的TinUI或BasicTinUI提供的类
    适用于重写样式配色的TinUI或BasicTinUI
    该类允许重写样式的TinUI或BasicTinUI使用TinUIXml
    '''

    def __init__(self,ui,name='tinui-theme'):
        self.theme=name
        self.ui=ui
        self.bbox=ui.bbox

    def change_theme_name(self,name:str):
        self.theme=name

    def get_theme(self):
        return self.theme

这个类没有任何实际用处,唯一的用处就是让其他所有的样式配色类都要继承这个类,确定名称和所绑定的BasicTinUI或TinUI。

从三行注释中也可以发现,这个类的另一个用处是可以直接搭配TinUIXml使用。这应该是TinUI-v4推出的功能,即TinUIXml可以绑定在一个TinUITheme样式类上,但同时样式类也必须绑定在一个存在的UI框架上。

TinUI自身提供的配色样式类

TinUI项目中实时维护的配色样式类只有两个:tinuidark.py, tinuilight,py

这里以明亮样式tinuilight.py为例:

class TinUILight(TinUITheme):
    
    def __init__(self, ui:Union[TinUI, BasicTinUI])
    	super().__init__(ui,'tinui-light-theme')
        self.label='light'
        self.ui['background']='#f3f3f3'
    
    def add_button(self,pos,*arg,**kw):
        return self.ui.add_button(pos,fg='#1b1b1b',bg='#fbfbfb',
              activefg='#1a1a1a',activebg='#f6f6f6',
              line='#cccccc',linew=1,activeline='#cccccc',
                            *arg,**kw)
    
    def add_checkbutton(self,pos,*arg,**kw):
        return self.ui.add_checkbutton(pos,
              fontfg='#1a1a1a',fg='#868686',bg='#ededed',
              activefg='#868686',activebg='#e5e5e5',
              onfg='white',onbg='#334ac0',
                            *arg,**kw)
    
    # ...

在初始化函数中,就确定了样式名称和绑定的UI框架背景色,前者不是必须的,只是习惯。

接下来,会给这个类如数添加BasicTinUI已经存在的控件添加函数,这些函数有如下需求:

  • 这些函数和控件创建函数必须要接受pos参数,无论是否真的存在这个参数需要用到
  • 除了色彩参数,其他一律原封不动传递给真实的控件创建函数
  • 对每一个控件添加上具体的配色

这样,无论是直接调用这个类,还是使用TinUIXml,都无需一一更改控件颜色。

函数名可以是任意add_<...>(...),也可以自定义控件,具体见TinUIXml实现源码,总之,返回值无论单个还是多个,最后一个必须是创建的所有控件的画布uid。

其它配色

在2025年的TinUI项目中,还存在tinuimoderndark.py, tinuimodernlight.py等文件,这是由chatglm-4生成的,不会持续维护。

画廊

明亮样式

tinuilight

现代黑暗样式

这个样式配色由chatglm-4生成

tinuiaidark

其他由AI生成的配色

这一段纯粹是用来玩的。

chatglm-4:现代明亮/黑暗

在这里插入图片描述

qwen-2.5-plus:暗黑橙色/紫色

在这里插入图片描述

豆包:明亮红色/青色

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值