Python 根据子部件的大小动态调整小部件的大小

Python 根据子部件的大小动态调整小部件的大小,python,kivy,Python,Kivy,我已经看到,这是非常接近我试图实现 我希望有一个滚动视图,显示即将在我的MythTV盒录制的内容。有一个标题小部件(固定大小)显示日期,还有一个单独的小部件(BoxLayout)显示录制的详细信息(显示在标签子小部件中) 我需要根据文本的高度调整BoxLayout的大小。这里的问题是,文本最多的标签并不总是同一个标签,因此最大高度需要考虑所有子标签 我的KV语言文件中有: <MythRecordingHeader> text: root.rec_date height

我已经看到,这是非常接近我试图实现

我希望有一个滚动视图,显示即将在我的MythTV盒录制的内容。有一个标题小部件(固定大小)显示日期,还有一个单独的小部件(BoxLayout)显示录制的详细信息(显示在标签子小部件中)

我需要根据文本的高度调整BoxLayout的大小。这里的问题是,文本最多的标签并不总是同一个标签,因此最大高度需要考虑所有子标签

我的KV语言文件中有:

<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