我有一个运行 Kivy 界面的 Python 代码。在界面中有一个部分,我有一个水平放置的过滤器组(一组按钮、微调器、文本输入框)。用户可以根据需要随意增加此过滤器组(在初始过滤器组下)。这就是为什么此部分位于可滚动视图中的原因。
然而,在运行代码时,初始过滤器组位于视图底部。乘以过滤器组后,您将看不到新创建的过滤器(因为它们是在初始过滤器下创建的,并且由于初始过滤器位于窗口底部,新过滤器在窗口外),除非您向上滚动视图。
所以就功能而言,一切正常。
唯一的问题是视觉;初始过滤器组位于视图底部,上方有一个空白区域。
问题是:如何将过滤器组移动到视图的顶部?
以下是Kivy代码:
ScrollView:
id: sv
do_scroll_x: False
GridLayout:
cols: 1
size_hint_y: None
height: max(self.minimum_height, sv.height)
padding: 5
BoxLayout:
#spacing: 2
size_hint_y: None
height: max(self.minimum_height, sv.height)
padding: 5
Label:
text: "1"
size_hint_x: 0.1
size_hint_y: 0.25
Spinner:
text: "2"
values: ["A", "B", "C", "D"]
size_hint_x: 0.2
size_hint_y: 0.25
Spinner:
text: "3"
values: ["A", "B", "C", "D"]
size_hint_x: 0.2
size_hint_y: 0.25
Spinner:
text: "4"
values: ["A", "B", "C", "D"]
size_hint_x: 0.2
size_hint_y: 0.25
TextInput:
hint_text: "5"
size_hint_x: 0.2
size_hint_y: 0.25
Button:
text: "+"
size_hint_x: 0.1
size_hint_y: 0.25`
ScrollView 下有一个GridLayout。我将其更改为 BoxLayout 并将方向更改为垂直。 我还在滚动视图或网格布局或框布局下尝试了 pos_hint (以防万一我尝试了所有) 同样,功能还可以,但视觉效果仍然相同。
[截图显示滤镜组在底部。我希望过滤器组在初始运行时位于视图的顶部。]
[这是一个gif]
线路:
height: max(self.minimum_height, sv.height)
是问题的一部分。你可以只使用更简单的:
height: self.minimum_height
在两个地方。但是无论何时使用
self.minimum_height
,该 Layout
的内容都必须定义高度。所以每个 Button
、Label
、Spinner
和 TextInput
都必须有明确的高度。所以这是你的 Kivy 代码的修改版本:
ScrollView:
id: sv
do_scroll_x: False
GridLayout:
cols: 1
size_hint_y: None
# height: max(self.minimum_height, sv.height)
height: self.minimum_height
padding: 5
BoxLayout:
#spacing: 2
size_hint_y: None
# height: max(self.minimum_height, sv.height)
height: self.minimum_height
padding: 5
Label:
text: "1"
size_hint_x: 0.1
size_hint_y: None
height: 30
Spinner:
text: "2"
values: ["A", "B", "C", "D"]
size_hint_x: 0.2
size_hint_y: None
height: 30
Spinner:
text: "3"
values: ["A", "B", "C", "D"]
size_hint_x: 0.2
size_hint_y: None
height: 30
Spinner:
text: "4"
values: ["A", "B", "C", "D"]
size_hint_x: 0.2
size_hint_y: None
height: 30
TextInput:
hint_text: "5"
size_hint_x: 0.2
size_hint_y: None
height: 30
Button:
text: "+"
size_hint_x: 0.1
size_hint_y: None
height: 30