Kivymd:通过按下按钮更改工具栏背景颜色
Kivymd: change toolbar backgroud color by pressing a button
我想知道是否可以通过按下按钮来更改工具栏背景颜色。我有 6 个不同颜色的按钮,当我按下它时,工具栏背景会改变它的颜色...
我尝试更改创建方法,但是 returns 出错...
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
应该是 四个 值的列表或元组(如果以这种格式给出而不是字符串,None 等) [r, g, b, a]
格式中的 0 和 1 之间。
我想知道是否可以通过按下按钮来更改工具栏背景颜色。我有 6 个不同颜色的按钮,当我按下它时,工具栏背景会改变它的颜色...
我尝试更改创建方法,但是 returns 出错...
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
应该是 四个 值的列表或元组(如果以这种格式给出而不是字符串,None 等) [r, g, b, a]
格式中的 0 和 1 之间。