KivyPython3.x循环添加小部件.kv

KivyPython3.x循环添加小部件.kv,python,kivy,Python,Kivy,我有这样一个python脚本: class GuiApp(App): def build(self): #for i in range(24): #Grid.add_widget(Button(text='Test')) return Gui() class Gui(BoxLayout): pass <Gui>: BoxLayout: orientation: 'vertical' But

我有这样一个python脚本:

class GuiApp(App):
    def build(self):
        #for i in range(24):
            #Grid.add_widget(Button(text='Test'))
        return Gui()

class Gui(BoxLayout):
    pass
<Gui>:
  BoxLayout:
    orientation: 'vertical'
    Button:
      text: 'Top'
    GridLayout:
      id: Grid
      cols: 5
      rows: 5
我有这样一个.kv文件:

class GuiApp(App):
    def build(self):
        #for i in range(24):
            #Grid.add_widget(Button(text='Test'))
        return Gui()

class Gui(BoxLayout):
    pass
<Gui>:
  BoxLayout:
    orientation: 'vertical'
    Button:
      text: 'Top'
    GridLayout:
      id: Grid
      cols: 5
      rows: 5
:
盒子布局:
方向:“垂直”
按钮:
文字:“顶部”
网格布局:
id:网格
科尔斯:5
行数:5
如何应用循环将24个按钮添加到GridLayout

我原以为可以像python注释中所示那样调用id网格,但这失败了

如何应用循环,将按钮添加到id为Grid的kv文件中的GridLayout

def build(self):
    layout = GridLayout()
    for i in range(24): layout.add_widget(...)
    return layout
我想至少

class GuiApp(App):
    def build(self):
        g = Gui()
        for i in range(24):
            g.Grid.add_widget(Button(text='Test'))
        return g

class Gui(BoxLayout):
    Grid = ObjectProperty(None)

我似乎已经想出了如何实现循环的方法:

派克

千伏

:
网格:网格
盒子布局:
方向:“垂直”
按钮:
文字:“顶部”
网格布局:
id:网格
科尔斯:5
行数:5

为了让它工作,我需要在ObjectProperty找到的.kv文件中引用它_grid:grid,网格在python中使用时需要小写

您的意思是说更多吗?虽然它可以自己工作,我需要将这些小部件添加到.kv文件中现有的子小部件BoxLayout>GridLayout中。好吧,也许我的新解决方案会起作用。。。不确定。。。在第二个版本中没有安装kivy,我得到了AttributeError:“NoneType”对象没有attribue“add_widget”。这发生在g.Grid.add_小部件上。我以前在尝试使用ObjectProperty时遇到过这个问题你必须告诉它。。。我忘了怎么。。。但是有点像。。。可能只是
Grid=ObjectProperty(GridLayout())
。。。dang我讨厌那种.kv语言用python构建小部件要好得多:PNice one,正是我想要的!嗨,参加聚会有点晚了。在这里,您已将其用于主应用程序。如果我正在使用屏幕管理器,并且我有一个屏幕,其中我需要使用kv文件使用for循环,该怎么办。