from kivy.app import App
from kivy.uix.scatterlayout import ScatterLayout
from kivy.uix.image import AsyncImage # 加载异步图片
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Color,Rectangle
# 无kv文件
class ScatterLayoutWidget(ScatterLayout):
pass
class BoxLayoutWidget(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
with self.canvas:
Color(1,1,1,1)
self.rect = Rectangle(pos=self.size,size = self.size) # 创建一个矩形 初使为盒子布局的大小
self.bind(pos = self.update_rect,size=self.update_rect) # 画布大小绑定
scatter_layout= ScatterLayoutWidget() # 创建分散布局类
image = AsyncImage(source = 'back.jpg') # 创建异步图像
scatter_layout.add_widget(image) # 把图片加到分散布局里面
self.add_widget(scatter_layout) # 把分散布局放到盒子布局里面
def update_rect(self,*args):
# 矩开有位置就是盒子布局的位位置大小也是
self.rect.pos=self.pos
self.rect.size=self.size
class SAPP(App):
def build(self):
return BoxLayoutWidget()
SAPP().run()