• relativeLayout相对布局的嵌套在py中的引用


    from kivy.app import App
    from kivy.uix.button import Button
    from kivy.uix.relativelayout import RelativeLayout
    from kivy.uix.boxlayout import BoxLayout
    from kivy.graphics import Color,Rectangle
    
    
    class MyButton(Button):
        """自定义一个按扭,公共属性
        """
        def __init__(self,**kwargs):
            super().__init__(**kwargs)
            self.font_size = 20 # 指定按扭的大小
            self.size_hint = [0.3,0.3]   # 按扭大小
    
    
    # 布局类用于BoxLayout子布局
    class RelativeLayoutWidget(RelativeLayout):
        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.size)
                self.bind(pos=self.update_rect,size=self.update_rect)
            # 创建一个relative布局
            relative_layout= RelativeLayout()
            # 使用自定义按扭
    
            bt0 = MyButton(text='bt1',pos_hint={'right':1,'top':1},background_color=(0.1,0.5,0.6,1))   # 正确
            bt1 = MyButton(text='bt2',pos_hint={'x':0,'top':1},background_color=(.1,.5,.6,1))
            bt3 = MyButton(text='relative',pos_hint={'center_x':.5,'center_y':.5},background_color=(0.4,0.5,.6,1))
            bt4 = MyButton(text='bt4',pos_hint={'x':0,'y':0},background_color=(0,0,1,1))
            bt5 = MyButton(text='bt5', pos_hint={'right': 1, 'y': 0}, background_color=(0.8,0.8,0.2,1))
    
            # 都加进新的相对布局中去
            for i in [bt0,bt1,bt3,bt4,bt5]:
                relative_layout.add_widget(i)
            # 占个位
            self.add_widget(BoxLayout())
            # 把这个新的相对布局加到Boxlayout中
            self.add_widget(relative_layout)
    
        # 此处多值参数多次忘记!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        def update_rect(self,*args):
            self.rect.pos=self.pos
            self.rect.size=self.size
    
    
    class RelativeApp(App):
        def build(self):
            # 返回父布局
            return BoxLayoutWidget()
    
    
    if __name__ == '__main__':
        RelativeApp().run()
  • 相关阅读:
    软件工程个人作业01
    个人冲刺——(五)
    个人冲刺——(四)
    个人冲刺——(三)
    个人冲刺——(二)
    个人冲刺——(一)
    单词统计
    第十周学习总结
    第九周学习总结
    用户模板场景分析
  • 原文地址:https://www.cnblogs.com/vip136510786/p/14607297.html
Copyright © 2020-2023  润新知