<p>在<code>Popup</code>中,您看到的大部分是<code>Labels</code>的背景。一个<code>Label</code>是<code>title</code>,另一个是你的<code>ChooseBoxLabel</code>。通过使用带有<code>kv</code>规则的自定义类为背景创建彩色<code>Rectangle</code>,可以轻松调整<code>ChooseBoxLabel</code>的背景色。{<cd4>}{<cd3>}更难,因为{<cd1>}的开发人员没有任何方法访问{<cd4>}背景色</p>
<p>以下是您可以做的一些事情的示例:</p>
<pre><code>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()
</code></pre>
<p>在上面的代码中,<code>MyBoxLayout</code>自定义类提供了一个蓝色背景,只有当其中的<code>Label</code>没有填充<code>Layout</code>时,该背景才可见。<code>kv</code>中的<code>Label</code>规则为<code>title</code>和<code>chooseBoxLabel</code>提供背景色,但它将影响<code>App</code>中的每个<code>Label</code></p>