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

时间:2015-07-30 11:37:53

标签: android python kivy

我有一个带有标题的游戏时弹出窗口,带有分数的标签,标签,告诉你插入你的名字,旁边的textinput和弹出底部的两个按钮。我之前尝试使用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类和所有导入。一切都按预期工作,唯一的问题是它看起来如何。

1 个答案:

答案 0 :(得分:0)

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

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