本文主要是介绍TinUI配色样式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
TinUI配色样式
- 引言
- 风格类
- 配色
- 完整代码
- 效果
- 2022-5-8
- 2022-8-30
- 2022-9-10
- 2022-9-17
- 2022-10-7
- 结语
引言
TinUI给我们带来了现代化的组件样式,这使得tkinter窗口更加美观。但是,当我们想要整个窗口实现统一风格配色的时候,我们该怎么使用TinUI实现呢?接下来,就是简单讲解一下步骤。
风格类
一般地,我们使用一个类来为TinUI(或BasicTinUI)添加样式风格。
为了让之后的调用方便,这个类不应该是对TinUI的重写,因为这样会使得同名方法造成干扰。因此,这个类更像是一个“托管”——使用与TinUI同名的方法,但不是直接继承,而是通过对应的函数调用TinUI绘制组件,其中,样式类参数不需要使用者定义。
所以,TinUI风格类不是一个组件,而是类似于TinUIXml
的“托管绑定类”。
以TinUI“明亮模式”为例,函数初始化基本如下:
class TinUILight:'''这是TinUI明亮模式的托管类,不是继承类调用时这需要注意文本和数据,样式类参数无需理会'''def __init__(self,ui:Union[TinUI,BasicTinUI]):self.ui=uiself.label='dark'
和TinUIXml
类很像。
配色
配色部分是我参考了一些东西的(具体什么我不说),基本的格式如下,以TinUI的按钮为例:
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)
也就是位置(pos)为必选参数,样式参数由类自己定义,剩下的就交给*arg
和**kw
参数了。
完整代码
这里是TinUI明亮模式的类源码,当然,目前我完成了TinUI(准确来说是BasicTinUI,TinUI的滚动条自己配色)的黑暗模式,其它配色以后再说。
明亮模式:
class TinUILight:'''这是TinUI明亮模式的托管类,不是继承类调用时这需要注意文本和数据,样式类参数无需理会'''def __init__(self,ui:Union[TinUI,BasicTinUI]):self.ui=uiself.label='dark'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)def add_label(self,pos,*arg,**kw):return self.ui.add_label(pos,fg='#1a1a1a',bg='#f3f3f3',outline='#f3f3f3',*arg,**kw)def add_entry(self,pos,*arg,**kw):return self.ui.add_entry(pos,fg='#606060',bg='#fbfbfb',activefg='black',activebg='#fbfbfb',linew=2,outline='#868686',onoutline='#3041d8',*arg,**kw)def add_separate(self,pos,*arg,**kw):return self.ui.add_separate(pos,fg='#e5e5e5',*arg,**kw)def add_radiobutton(self,pos,*arg,**kw):return self.ui.add_radiobutton(pos,fg='black',bg='white',activefg='white',activebg='#4453db',*arg,**kw)def add_link(self,pos,*arg,**kw):return self.ui.add_link(pos,fg='#4f62ca',activefg='red',activebg='#eaeaea',*arg,**kw)def add_waitbar1(self,pos,*arg,**kw):return self.ui.add_waitbar1(pos,fg='#3041d8',bg='#f3f3f3',okfg='#3041d8',bd=5,*arg,**kw)def add_labelframe(self,uids:tuple,*arg,**kw):return self.ui.add_labelframe(uids,fg='#1a1a1a',bg='#f4f4f4',*arg,**kw)def add_waitbar2(self,pos,*arg,**kw):return self.ui.add_waitbar2(pos,fg='#334ac0',bg='#f3f3f3',okcolor='#3041d8',*arg,**kw)def add_combobox(self,pos,*arg,**kw):return self.ui.add_combobox(pos,fg='#1a1a1a',bg='#fbfbfb',activefg='#1a1a1a',activebg='#ededee',*arg,**kw)def add_progressbar(self,pos,*arg,**kw):return self.ui.add_progressbar(pos,fg='#868686',bg='#334ac0',back='#f3f3f3',fontc='#79b8f8',*arg,**kw)def add_table(self,pos,*arg,**kw):return self.ui.add_table(pos,outline='#dadad8',fg='black',bg='white',headbg='#f4f4f2',*arg,**kw)def add_onoff(self,pos,*arg,**kw):return self.ui.add_onoff(pos,fg='#5a5a5a',bg='#ededed',onfg='#ffffff',onbg='#4453db',*arg,**kw)def add_spinbox(self,pos,*arg,**kw):return self.ui.add_spinbox(pos,fg='#1a1a1a',bg='#fbfbfb',activefg='#818181',activebg='#f2f2f2',*arg,**kw)def add_scalebar(self,pos,*arg,**kw):return self.ui.add_scalebar(pos,fg='#3b50ba',bg='#868686',activefg='#aeb5d7',*arg,**kw)def add_info(self,pos,*arg,**kw):return self.ui.add_info(pos,fg='#0078d4',bg='#f9f9f9',info_fg='#1a1a1a',*arg,**kw)def add_menubar(self,uid,*arg,**kw):return self.ui.add_menubar(uid,fg='#1a1a1a',bg='#faf8f9',activefg='#1a1a1a',activebg='#efefef',*arg,**kw)def add_tooltip(self,uid,*arg,**kw):return self.ui.add_tooltip(uid,fg='#1a1a1a',bg='#efefef',*arg,**kw)def add_waitbar3(self,pos,*arg,**kw):return self.ui.add_waitbar3(pos,fg='#3041d8',bg='#f3f3f3',okcolor='#3041d8',*arg,**kw)def add_textbox(self,pos,*arg,**kw):return self.ui.add_textbox(pos,fg='#1a1a1a',bg='white',outline='#868686',onoutline='#3041d8',*arg,**kw)def add_scrollbar(self,pos,widget,*arg,**kw):return self.ui.add_scrollbar(pos,widget,bg='#f9f9f9',color='#8d8d8d',oncolor='#8a8a8a',*arg,**kw)
效果
以下是两个示例效果:
2022-5-8
2022-8-30
2022-9-10
TotoWang-hhh提供了在Windows下自动判断系统深浅色的样式托管——themeauto.py。
2022-9-17
向样式展示基类(window.py)添加TinUI便捷上下翻页功能。
该功能方便了所有TinUI样式开发者。该功能不需要开发者额外添加,仅需要使用TinUI提供的展示基类窗口即可。
2022-10-7
添加listview和waitframe的样式配色。
结语
TinUI的重心还是在组件发展上,但是还是会时不时地推出新配色风格的。
对于贡献在GitHub上的TinUI开源样式,相关问题见限制类信息公告:TinUI theme,密码保护:tinuitheme。
🔆tkinter创新🔆
这篇关于TinUI配色样式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!