我试图向GridLayout添加一个自定义小部件,但是大小和位置不会动态缩放以适应父布局。我的目标是通过按一个按钮将这些CustomWidgets之一添加到GridLayout中。如果我直接将.kv文件的<CustomWidgets>
类的内容复制并粘贴到.kv GridLayout(左图)中,我就能够获得我想要的结果,但是这会避开按钮的作用。在
我链接了一张图片来帮助澄清我的预期结果和实际结果。左图显示了我按三次“添加活动”按钮所需的结果。右图显示了当我尝试通过按三次“添加活动”按钮添加自定义小部件时的实际结果。在
我想这个问题可以解决,如果在添加到GridLayout之后设置了“size_hint_x:self.x”。我试图通过在构建后设置CustomWidget的“size\u hint_x”来设置它以适应.kv GridLayout中的父布局
CustomWidgets:
size_hint_x: self.x
运气不好。我可以设置一个数字值作为CustomWidget的宽度,但是它不会动态地改变以适应窗口的大小。在
演示.py
^{pr2}$演示电压
<CustomGridLayout>:
id: underlying_layout
orientation: 'vertical'
cols: 1
row: 2
ScrollView:
GridLayout: #<- This is the GridLayout I want to add custom widgets to
id: list_layout
cols: 1
height: self.minimum_height
row_default_height: 60
size_hint_y: None
Label:
height: 20
text: 'List:'
AnchorLayout:
size_hint_y: .4
Button:
text: 'Add List Item'
on_press: root.add_list_item()
<CustomWidgets>
StackLayout:
cols: 3
rows: 1
orientation: 'lr-tb'
#size_hint: self.x , None #<-- Is there a size_hint I can provide that will adjust size once widget is added?
height: 80
Button:
size_hint: .25, None
TextInput:
size_hint: .5, None
Button:
size_hint: .25, None
我认为如果您使用
CustomWigets
扩展StackLayout
,而不是包含StackLayout
,比如这样:那么,在你的kv文件中:
^{pr2}$size_hint: 1.0 , None
将使CustomWidgets
宽度与其父宽度相等。在当您的}的{}表示其父元素的一部分,即}使用它。在
CustomWidgets
扩展Widget
并包含一个StackLayout
,那么包含的{CustomWidgets
本身。并且Widget
类忽略size_hint
,只有Layout
类和{相关问题 更多 >
编程相关推荐