所以我有一些简单的布局:
runAllManagedModulesForAllRequests="true"
stubborn_layout中小部件的高度计算得很好。但是,stubborn_layout本身的默认高度为100.我想要的是让它自动设置为孩子们拥有的任何大小。我可以手动将其设置到正确的高度,但这不是特别优雅或可维护。我能这样做吗?
或者我的做法可能是错的......但我找不到更适合我的其他布局。
答案 0 :(得分:1)
你可以通过两种方式解决这个问题。如果你想坚持使用BoxLayout,你可以将它的高度绑定到一个子节点,例如Label小部件:
BoxLayout:
id: stubborn_layout
size_hint_y: None
height: lbl.height # Bind to Label height to update according to font size, for example
TextInput:
id: ti
multiline: False
#size_hint_y: None # The height of TextInput will depend on Label
Label:
id: lbl # Add id for referencing in stubborn_layout
text: 'things'
size_hint_x: None
size_hint_y: None
size: self.texture_size
font_size: 12 # Try different font sizes. stubborn_layout will update accordingly
padding_x: 6
padding_y: 6
然而,更优雅的方法是使用GridLayout并将其minimum_height
属性绑定到height
。这样,父布局将始终根据最高子项的高度进行更新。
GridLayout:
id: stubborn_layout
size_hint_y: None
height: self.minimum_height # This does the trick of updating the height
cols: 2 # If you want to add more children in horizontal layout, update the number of columns
TextInput:
id: ti
multiline: False
size_hint_y: None
height: 300 # You can try different height values
Label:
text: 'things'
size_hint_x: None
size_hint_y: None
size: self.texture_size
font_size: 12 # Try different font_sizes
padding_x: 6
padding_y: 6
另一方面,请勿使用""适用于id
属性(https://kivy.org/docs/guide/lang.html#referencing-widgets)