В вашем Popup
большая часть того, что вы видите, является фоном Labels
. Один Label
- это title
, а другой - ваш ChooseBoxLabel
. Вы можете легко настроить цвет фона ChooseBoxLabel
, используя пользовательский класс с правилом kv
для создания цветного Rectangle
для фона. title
Label
сложнее, поскольку разработчик Popup
никак не мог получить доступ к этому title
цвету фона.
Вот пример некоторых вещей, которые вы можете сделать:
from kivy.app import App
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.popup import Popup
from kivy.uix.label import Label
class MyBoxLayout(BoxLayout):
pass
Builder.load_string('''
<Label>: # Note that this affects EVERY Label in the app
canvas.before:
Color:
rgba: 1,0,0,1
Rectangle:
pos: self.pos
size: self.size
<MyBoxLayout>:
canvas.before:
Color:
rgba: 0,0,1,1
Rectangle:
pos: self.pos
size: self.size
''')
class BoxL(BoxLayout):
def chooseFile(self):
self.chosePop = Popup()
self.chosePop.title = 'My Popup'
choseBox = MyBoxLayout()
choseBoxLabel = Label()
choseBoxLabel.size_hint_y = 0.2
choseBoxLabel.text = 'Any Text'
choseBox.add_widget(choseBoxLabel)
self.chosePop.content = choseBox
self.chosePop.size_hint = (.5, .5)
self.chosePop.open()
class GUI(App):
def build(self):
self.title = 'MyApp'
Clock.schedule_once(self.do_popup, 3)
return BoxL()
def do_popup(self, dt):
self.root.chooseFile()
if __name__ == '__main__':
GUI().run()
В приведенном выше коде пользовательский класс MyBoxLayout
предоставляет синий фон, который виден только если Label
в нем не заполнение Layout
. Правило Label
в kv
предоставляет цвет фона для title
и chooseBoxLabel
, но оно влияет на каждый Label
в App
.