看看下面的截图:
我在这个Kivy布局方案中有点新,之前我在PyQt工作了很多。在PyQt中,使用Spacer可以轻松摆脱空白的垂直空间。但你怎么在Kivy这样做?下面是构成此布局的KV文件的一部分。
GridLayout:
cols: 1
GridLayout:
cols: 2
row_default_height: '48dp'
row_force_default: True
spacing: 10, 10
padding: 10, 10
Label:
size_hint: None, None
text: 'Input'
halign: 'left'
valign: 'top'
text_size: self.size
width: 50
TextInput:
id: txt_url
size_hint: 1, None
text: ''
TabbedPanel:
id: tp
do_default_tab: False
TabbedPanelItem:
id: tab_fl
text: ''
TabbedPanelItem:
text: ''
FloatLayout
id: box
TabbedPanelItem:
text: ''
FloatLayout
id: box
我很想知道使用Kivy布局机制的最佳做法是什么。 :)
答案 0 :(得分:1)
在这种情况下,您可以利用GridLayout
的{{1}}属性来适当调整大小。
minimum_height
答案 1 :(得分:0)
由于您在根GridLayout
中使用了一个列宽,因此可以根据子高度调整行的大小,使用以下技巧设置rows_minimum
。
GridLayout:
cols: 1
row_force_default: True
## Call it what ya like, just interested in setting 'self.rows_minimum'
foo: [self.rows_minimum.update({i: x.height}) for i, x in enumerate(reversed(list(self.children)))]
## ... rest of layout ...
内部GridLayout
和TabbedPanel
是您的根GridLayout
的行/子项,因此设置内部元素的高度应该允许{{ 1}}生成器重定向到上拉多余的空间。
现在对于可能有多个列的读者来说,有一个更广泛的例子,它显示了一种处理网格布局和一堆其他好东西的自动调整大小的方法,而不是另一个关于文本输入的answer自动换行。