【发布时间】:2016-05-04 19:20:54
【问题描述】:
我的问题是我需要根据可变数量的网格方块创建一个按钮网格,并将它们放置在网格布局上并使用屏幕管理器将它们显示在屏幕上。我知道如何使用简单的 for 循环在纯 python 中执行此操作,但是我用 kivy 语言为我的程序编写了布局,我不知道如何将按钮添加到网格布局中,因为我不知道如何在 kv 文件中正确引用它们。相关的python代码是:
def buildMap():
index = 0
for index in range(0, numberOfGridBlocks):
mainMap.ids["Map"].add_widget(Button())
index = index + 1
buildMap()
kv文件的相关部分是:
ScreenManagement:
MainMenuScreen:
NewGameMenuScreen:
JoinGameMenuScreen:
TutorialMenuScreen:
SettingsMenuScreen:
MapScreen:
<MenuButton>:
on_press: app.menuButtonPressed()
size_hint_y: .125
background_normal: "images/button.png"
background_down: "images/buttonPressed.png"
<Button>:
<BoxLayout>:
orientation: "vertical"
<MapLayout>:
<MapScreen>:
name: "mapScreen"
MapLayout:
id: "Map"
cols: 5
【问题讨论】:
-
您想为每个屏幕创建网格布局并在其中放置一些按钮?
-
是的,无需在 kv 文件中静态执行。换句话说,我知道我可以通过在父 MapLayout 下键入 Button: X 次来创建按钮,但它们需要通过可变次数生成,因此必须动态生成。
-
对不起,我看错了,只是在地图屏幕上。