Kivy背景色
问题描述
想要设置背景色,但是BoxLayout直接生成的背景色只在左下角占据了一小块,尺寸是[100,100]
代码
class RootWidget(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.orientation = 'horizontal'
print('BoxLayout.size: %s' % self.size)
with self.canvas.before:
Color(1,0,0,1)
self.rect = Rectangle(size=self.size,
pos=self.pos)
class TestApp(App):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.title = 'QuickBOM' # 更改标题文本
def build(self):
root = RootWidget()
root.add_widget(Label(text='中文'))
root.add_widget(Button(text='试试看'))
root.add_widget(TextInput())
return root
TestApp().run()
解决方案一
参考说明文档,绑定事件刷新事件
代码
class RootWidget(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.orientation = 'horizontal'
print('BoxLayout.size: %s' % self.size)
self.bind(size=self._update_rect, pos=self._update_rect)
with self.canvas.before:
Color(1,0,0,1)
self.rect = Rectangle(size=self.size,
pos=self.pos)
def _update_rect(self, instance, value):
self.rect.pos = instance.pos
self.rect.size = instance.size
解决方案二
利用Window.size
代码
class RootWidget(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.orientation = 'horizontal'
print('Window.size: %s' % str(Window.size))
with self.canvas.before:
Color(1,0,0,1)
self.rect = Rectangle(size=Window.size,
pos=self.pos)