章节知识点总揽
3.1 设置页面背景
在创建一个widget控件后,Kivy会自动为其生成一个canvas画布,作为绘制对象。可以通过canvas画布设置颜色、尺寸、用图片当背景。
3.1.1 使用纯色背景
新建main.py文件,从kivy.grahpics包导入Ractengle和Color属性来绘制矩形和设置颜色。具体代码如下:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Rectangle,Color
class BoxLayoutWidget(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
#设置背景
with self.canvas:
#设置背景色,rgba格式,通常值为0-1之间(具体的值/255)
Color(1,1,1,1)
Rectangle(pos=self.pos,size=self.size)
class BoxApp(App):
def build(self):
return BoxLayoutWidget()
if __name__ == '__main__':
BoxApp().run()
运行main.py文件,在窗口左下角有一个100x100的白色矩形。如下图:
如果要让左下角100x100的白色矩形充满整个窗口,需要在小部件更改时,更新矩形的pos属性,设置为自动调整大小即可。关键代码如下:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Rectangle,Color
class BoxLayoutWidget(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
#设置背景
with self.canvas:
#设置背景色,rgba格式,通常值为0-1之间(具体的值/255)
Color(1,1,1,1)
Rectangle(pos=self.pos,size=self.size)
self.bind(pos=self.update_rect,size=self.update_rect)
#更新尺寸函数,保持self.rect.pos/size等于窗口尺寸
def update_rect(self,*args):
#设置背景尺寸
self.rect.pos=self.pos
self.rect.size=self.size
class BoxApp(App):
def build(self):
return BoxLayoutWidget()
if __name__ == '__main__':
BoxApp().run()
运行main.py文件,可以看到窗口已经被白色举行全部填充。
使用.kv实现以上效果:
修改main.py文件,删除其中布局相关设置,具体如下:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class BoxLayoutWidget(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
class BoxApp(App):
def build(self):
return BoxLayoutWidget()
if __name__ == '__main__':
BoxApp().run()
根据新建的BoxApp类,新建box.kv文件,内容如下:
<BoxLayoutWidget>:
canvas:
Color:
rgba:[1,1,1,]
Rectangle:
size:self.size
pos:self.pos
运行效果如下图:
可以使用Kivy提供的更简单的方法:直接设置窗口颜色,代码如下:
from kivy.core.window import Window
from kivy.utils import get_color_from_hex
Window.clearcolor = get_color_from_hex('#ffffff')
上一篇:计时重置
下一篇:使用图片背景