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()