《Python+Kivy(App开发)从入门到实践》自学笔记:设置页面背景——使用纯色背景

本文介绍了如何在Kivy框架中设置页面背景,包括使用纯色背景和填充整个窗口。通过修改`BoxLayoutWidget`的初始化方法,结合`canvas`、`Rectangle`和`Color`实现背景颜色设置。此外,还展示了如何通过监听窗口尺寸变化,动态调整背景矩形的大小以填充整个窗口。另外,文章还提到了使用.kv文件进行同样效果的设置,以及直接设置窗口颜色的简便方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

章节知识点总揽

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的白色矩形。如下图:

c4d51626c6284b58b083818bebe0a61e.png

         如果要让左下角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文件,可以看到窗口已经被白色举行全部填充。

f42750f391ce46bcb4f747aefd4d4139.png

         使用.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

        运行效果如下图:

05b5f16411a2410e86795faa3ddb6e38.png

        可以使用Kivy提供的更简单的方法:直接设置窗口颜色,代码如下:

from kivy.core.window import Window
from kivy.utils import get_color_from_hex
Window.clearcolor = get_color_from_hex('#ffffff')

上一篇:计时重置

下一篇:使用图片背景

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静候光阴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值