Python 根据子部件的大小动态调整小部件的大小
我已经看到,这是非常接近我试图实现 我希望有一个滚动视图,显示即将在我的MythTV盒录制的内容。有一个标题小部件(固定大小)显示日期,还有一个单独的小部件(BoxLayout)显示录制的详细信息(显示在标签子小部件中) 我需要根据文本的高度调整BoxLayout的大小。这里的问题是,文本最多的标签并不总是同一个标签,因此最大高度需要考虑所有子标签 我的KV语言文件中有:Python 根据子部件的大小动态调整小部件的大小,python,kivy,Python,Kivy,我已经看到,这是非常接近我试图实现 我希望有一个滚动视图,显示即将在我的MythTV盒录制的内容。有一个标题小部件(固定大小)显示日期,还有一个单独的小部件(BoxLayout)显示录制的详细信息(显示在标签子小部件中) 我需要根据文本的高度调整BoxLayout的大小。这里的问题是,文本最多的标签并不总是同一个标签,因此最大高度需要考虑所有子标签 我的KV语言文件中有: <MythRecordingHeader> text: root.rec_date height
<MythRecordingHeader>
text: root.rec_date
height: 25
size_hint_y: None
halign: "left"
<MythRecording>
orientation: "horizontal"
#height: 60
height: max(mrec_desc.texture_size[1], mrec_time.texture_size[1], mrec_title.texture_size[1])
size_hint_y: None
BGLabel:
id: mrec_time
size_hint: 0.2, None
text_size: self.width, None
height: max(self.texture_size[1], mrec_title.texture_size[1], mrec_desc.texture_size[1])
#size_hint_x: 0.2
text: root.rec["time"]
bgcolour: root.bg
BGLabel:
id: mrec_title
size_hint: 0.3, None
text_size: self.width, None
height: max(self.texture_size[1], mrec_time.texture_size[1], mrec_desc.texture_size[1])
#size_hint_x: 0.3
text: "{}\n{}".format(root.rec["title"], root.rec["subtitle"])
halign: "left"
bgcolour: root.bg
BGLabel:
id: mrec_desc
text: root.rec["desc"]
size_hint: 0.5, None
text_size: self.width, None
height: max(self.texture_size[1], mrec_time.texture_size[1], mrec_title.texture_size[1])
halign: "left"
bgcolour: root.bg
这几乎和我预期的一样——BoxLayouts的高度确实不同,总体上,显示所有文本,但有一两次剪辑。我不清楚这是否是由于水平对齐造成的
我现在把所有这些孩子放在一个盒子里
然而,我真正的问题是,我需要在ScrollView中获取这些内容(因此我提到了链接)。为了让滚动正常工作,我想我需要设置BoxLayout的高度,但我真的很难计算出它的高度
在BoxLayout的子项上循环并查看height
属性只会显示MythRecordings
的高度为0
是否有方法可以获取所有子项的总高度并设置BoxLayout的高度,以便我的scrollview正常工作?将BoxLayout替换为GridLayout,然后设置:
size: self.minimum_size
GridLayout的minimum_size属性会自动跟踪其子项的大小。对于我的长问题,这是一个令人尴尬的简短回答!我很有信心这会起作用,但我今晚会测试,如果测试结果正常,我会接受答案。效果很好。非常感谢。
size: self.minimum_size