带有更多小部件的弹出窗口使用哪种布局 - kivy

Which layout to use for popup with more widgets - kivy

我有一个带有标题的游戏结束弹出窗口、带有得分的标签、告诉您输入姓名的标签、旁边的文本输入以及弹出窗口底部的两个按钮。我之前尝试使用 BoxLayout 但它看起来不像我想要的,所以我将其更改为 GridLayout 但结果很奇怪。主要问题是小部件不会覆盖整个弹出窗口,而是在底部留下大约 30 像素的间距。 这是弹出窗口的屏幕截图:http://postimg.org/image/5px41imkd/

.py 弹出窗口的部分代码:

def show_gameover_popup(self, *args):
    content = GridLayout(rows=3)
    score_label = Label(text="Your score:  {}".format(self.score), font_size=20)
    name_label = Label(text="Your name:", font_size=20)
    play_button = Button(text="Play again",
                         font_size=20,
                         size_hint_y=None,
                         height=55,
                         background_color=(0.012, 0.227, 0.11, 0.4))
    empty_label = Label(text=" ", font_size=20)
    name_input = TextInput(multiline=False, font_size=20, size_hint_y=None,height=50)
    exit_button = Button(text="Exit",
                         font_size=20,
                         on_press=exit,
                         size_hint_y=None,
                         height=55,
                         background_color=(0.012, 0.227, 0.11, 0.4))

    content.add_widget(score_label)
    content.add_widget(empty_label)
    content.add_widget(name_label)
    content.add_widget(name_input)
    content.add_widget(play_button)
    content.add_widget(exit_button)

    p = GameOverPopup(content=content)
    play_button.bind(on_press=p.dismiss)
    p.open()

和.kv:

<GameOverPopup>:
    size_hint: .5, .4
    title: "You lost!"
    title_size: 20
    background_color: 1,1,1,0.5
    background: "popup.png"
    auto_dismiss: False

我有 GameOverPopup class 和所有进口商品。一切正常,我唯一的问题是它的外观。

好吧,在 .kv 中,您将 GameOverPopup 高度指定为屏幕高度和宽度的百分比(size_hint:.5、.4),但内容高度(按钮和标签等) ) 以像素为单位。这意味着根本无法保证内容适合弹出区域,因此存在间隙。

为了让 GridLayout 垂直调整子项的大小,您需要为子项指定 'size_hint_y',而不是对它们的高度进行硬编码。