Kivymd:通过按下按钮更改工具栏背景颜色



我想知道是否可以通过按下按钮来更改工具栏背景颜色。我有6个不同颜色的按钮,当我按下它时,工具栏背景会改变它的颜色。。。

我试图更改创建方法,但返回了一个错误。。。

def changeThemeColor(self):
self.root.ids.tbCategorie.md_bg_color = [0, 0, 0, 1]

下面是我的代码。

from kivymd.app import MDApp
from kivymd.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivymd.uix.button import MDFlatButton
from kivy.uix.scrollview import ScrollView
KV = '''
ScreenManager:
Screen:
name: 'screenOption'
BoxLayout:
orientation: 'vertical'
MDToolbar:
id: tbOption
md_bg_color: 0, 0, 0, 1
Options:
id: screenoption
<Options>
ScrollView:
MDList:
spacing: '20dp'
padding: '25dp'

MDLabel:    
BoxLayout:
MDFlatButton:
md_bg_color: (0/255,0/255,0/255)
on_release: app.changeThemeColor()
line_color: (128/255,128/255,128/255)

MDLabel:        
MDFlatButton:
md_bg_color: (255/255,255/255,255/255)
line_color: (128/255,128/255,128/255)

MDLabel:    
MDFlatButton:
md_bg_color: (255/255,0/255,0/255)
line_color: (128/255,128/255,128/255)

MDLabel:
MDFlatButton:
md_bg_color: (0/255,0/255,255/255)
line_color: (128/255,128/255,128/255)

MDLabel:
BoxLayout:
MDFlatButton:
md_bg_color: (255/255,0/255,255/255)
line_color: (128/255,128/255,128/255)

MDLabel:
MDFlatButton:
md_bg_color: (255/255,255/255,0/255)
line_color: (128/255,128/255,128/255)

MDLabel:
MDFlatButton:
md_bg_color: (0/255,128/255,0/255)
line_color: (128/255,128/255,128/255)

MDLabel:
MDFlatButton:
md_bg_color: (128/255,128/255,128/255)
line_color: (128/255,128/255,128/255)
'''
class Options(FloatLayout):
pass

class Aplicativo(MDApp):

def changeThemeColor(self):
self.root.ids.tbCategorie.md_bg_color = [0, 0, 0, 1]

def build(self):
return Builder.load_string(KV)

Aplicativo().run()

顺便说一下,原来的代码我至少有5个不同的工具栏,我想更改。

在发布的代码中,tbOption引用MDToolbar,而tbCategorie没有引用。因此,在方法changeThemeColor中,您需要将其更改为

self.root.ids.tbOption.md_bg_color = [0, 0, 0, 1]

此外,在设置md_bg_color、时可能会出现以下错误

ValueError: MDToolbar.md_bg_color value length is immutable`

这意味着md_bg_color应该是[r, g, b, a]格式中介于0和1之间的四个值的列表或元组(如果以字符串、无等以外的格式给出(。

最新更新