kivymd主调色板的自定义颜色



是否有任何方法可以为kivymd主调色板以十六进制的形式应用自定义颜色?

像这样

self.theme_cls.primary_palette=hex('#171717')  
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivymd.app import MDApp
from kivymd.uix.floatlayout import MDFloatLayout
from kivymd.uix.tab import MDTabsBase
from kivymd.icon_definitions import md_icons
colors = {
"Teal": {
"50": "e4f8f9",
"100": "bdedf0",
"200": "97e2e8",
"300": "79d5de",
"400": "6dcbd6",
"500": "6ac2cf",
"600": "63b2bc",
"700": "5b9ca3",
"800": "54888c",
"900": "486363",
"A100": "bdedf0",
"A200": "97e2e8",
"A400": "6dcbd6",
"A700": "5b9ca3",
},
"Blue": {
"50": "e3f3f8",
"100": "b9e1ee",
"200": "91cee3",
"300": "72bad6",
"400": "62acce",
"500": "589fc6",
"600": "5191b8",
"700": "487fa5",
"800": "426f91",
"900": "35506d",
"A100": "b9e1ee",
"A200": "91cee3",
"A400": "62acce",
"A700": "487fa5",
},
"Light": {
"StatusBar": "E0E0E0",
"AppBar": "F5F5F5",
"Background": "FAFAFA",
"CardsDialogs": "FFFFFF",
"FlatButtonDown": "cccccc",
},
"Dark": {
"StatusBar": "000000",
"AppBar": "212121",
"Background": "303030",
"CardsDialogs": "424242",
"FlatButtonDown": "999999",
}
}

KV = '''
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "Example Tabs"
MDTabs:
id: tabs

<Tab>
MDIconButton:
id: icon
icon: root.icon
user_font_size: "48sp"
pos_hint: {"center_x": .5, "center_y": .5}
'''

class Tab(MDFloatLayout, MDTabsBase):
'''Class implementing content for a tab.'''
icon = ObjectProperty()

class Example(MDApp):
icons = list(md_icons.keys())[15:30]
def build(self):
self.theme_cls.colors = colors
self.theme_cls.primary_palette = "Blue"
self.theme_cls.accent_palette = "Teal"
return Builder.load_string(KV)
def on_start(self):
for name_tab in self.icons:
tab = Tab(text="This is " + name_tab, icon=name_tab)
self.root.ids.tabs.add_widget(tab)

Example().run()

https://kivymd.readthedocs.io/en/latest/themes/theming/changing-the-theme-colors

我认为只能通过肮脏的黑客。

from kivymd.color_definitions import palette, text_colors, light_colors
enter code here`palette.append("Black")
text_colors["Black"] = {
"50": "000000",
"100": "000000",
"200": "000000",
"300": "000000",
"400": "000000",
"500": "000000",
"600": "000000",
"700": "000000",
"800": "000000",
"900": "000000",
"A100": "000000",
"A200": "000000",
"A400": "000000",
"A700": "000000",
}
light_colors["Black"] = {}
这个<<p> strong> 第一次导入Kivy或kivymd,否则会引发KeyError。

然后你还需要在自定义字典中定义你的自定义颜色。

custom_colors = {
"Black": text_colors["Black"] # you can also repeat all values and adjust
}

最后我们需要设置新的自定义颜色(最好是在构建中)


class MyApp(MDApp):
def build(self):
self.theme_cls.colors.update(custom_colors)
return RootWidget()

现在你可以使用你的自定义颜色。

免责声明;这看起来很粗糙,我不建议在没有测试的情况下在生产中使用它。也可能有更好的方法,但我找不到任何记录。最好的办法可能是覆盖一个已经定义的颜色(比如"青色"),并设置你喜欢的值。可能会导致颜色冲突。

最新更新