""" ScatterLayout:分散布局 """ from kivy.app import App from kivy.uix.scatterlayout import ScatterLayout from kivy.uix.boxlayout import BoxLayout from kivy.uix.image import AsyncImage # 导入颜色位置 from kivy.graphics import Color,Rectangle 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.pos,size=self.pos) self.bind(pos=self.update_rect,size=self.update_rect) # 创建分散布局 scatter_layout=ScatterLayout() # 创建异布图像 img = AsyncImage(source='https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201512%2F29%2F20151229185745_Q3JBd.jpeg&refer=http%3A%2F%2Fb-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1620021722&t=bc1d19fa8b4d7847fb1c5c7bb069c4c9') # 将图片添加到里分散布局里面 scatter_layout.add_widget(img) # 加到父布局里面 self.add_widget(scatter_layout) def update_rect(self,*args): self.rect.pos= self.pos self.rect.size=self.size class ScatterLayoutApp(App): def build(self): return BoxLayoutWidget() if __name__ == '__main__': ScatterLayoutApp().run()