我有一个带有标题的游戏时弹出窗口,带有分数的标签,标签,告诉你插入你的名字,旁边的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
类和所有导入。一切都按预期工作,唯一的问题是它看起来如何。
答案 0 :(得分:0)
嗯,在.kv中,您将GameOverPopup高度指定为屏幕高度和宽度的百分比(size_hint:.5,.4),但内容高度(按钮和标签等)以像素为单位。这意味着根本无法保证内容适合弹出区域,因此存在差距。
为了让GridLayout垂直调整子项的大小,您需要为子项指定“size_hint_y”而不是硬编码它们的高度。