Я хотел бы знать, можно ли изменить цвет фона панели инструментов, нажав кнопку. У меня есть 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
должен быть списком или кортежем (если задан в этом формате, отличном от строки, None и т. д.) значений четыре между 0 и 1 в формате [r, g, b, a]
.
Вам просто нужно изменить ссылку
id
.