Если вы просто хотите изменить цвет фона для части Label
в Popup
, вы можете просто определить свой собственный подкласс Label
:
class MyLabel(Label):
pass
и в своем 'kv':
<MyLabel>:
canvas.before:
Color:
rgba: 1,0,0,1
Rectangle:
pos: self.pos
size: self.size
Затем, используя MyLabel
вместо Label
в вашем Popup
, вы получите красный фон (но не для области заголовка Popup
).
Если вы хотите изменить цвет фона для всего Popup
, я думаю, вам нужно будет переопределить предопределенный стиль для Popup
. Опять же, создайте подкласс Popup
:
class MyPopup(Popup):
bg_color = ListProperty([0,0,0,1])
bg_color
станет цветом фона. Теперь переопределите стиль:
<-MyPopup>:
_container: container
GridLayout:
padding: '12dp'
cols: 1
size_hint: None, None
pos: root.pos
size: root.size
Label:
canvas.before:
Color:
rgba: root.bg_color
Rectangle:
pos: self.pos
size: self.size
text: root.title
color: root.title_color
size_hint_y: None
height: self.texture_size[1] + dp(16)
text_size: self.width - dp(16), None
font_size: root.title_size
font_name: root.title_font
halign: root.title_align
Widget:
size_hint_y: None
height: dp(4)
canvas.before:
Color:
rgba: root.bg_color
Rectangle:
pos: self.pos
size: self.size
canvas:
Color:
rgba: root.separator_color
Rectangle:
pos: self.x, self.y + root.separator_height / 2.
size: self.width, root.separator_height
BoxLayout:
canvas.before:
Color:
rgba: root.bg_color
Rectangle:
pos: self.pos
size: self.size
id: container
Символ -
в начале вышеуказанного kv
указывает на то, что мы переопределяем стиль по умолчанию (большая часть вышеупомянутого kv
скопирована из значения по умолчанию style.kv
). Использование canvas.before
устанавливает цвет фона. MyPopup
теперь имеет свойство bg_color
, которое можно установить на любой цвет, который вы хотите, например, чтобы установить красный фон:
def none_selected(self):
pop = MyPopup(title='Error',
content=Label(text='Please select at least one option', multiline=True,),
size_hint=(None, None), size=(250, 200), bg_color=[1,0,0,1])
pop.open()