Python Kivy:将函数变量应用于按钮文本

Python Kivy:将函数变量应用于按钮文本,python,kivy,kivy-language,Python,Kivy,Kivy Language,我有一些滚动可用的屏幕示例。 我正在测试这个示例以应用于我的应用程序 当我启动这个python文件时,我可以得到如下屏幕 但我想要的是上面这样。 我想制作尽可能多的按钮numberoflist 并将三行TESTTEST.txt放在一个按钮中,如上所示 6、2、159、6、6、467每个数字都是Businfo的列表 因此,我可以通过businfolist[0]、businfolist[1]、businfolist[2]等方式访问每个号码 首先,我为测试编写了这样的代码 BoxLayou

我有一些滚动可用的屏幕示例。 我正在测试这个示例以应用于我的应用程序

当我启动这个python文件时,我可以得到如下屏幕

但我想要的是上面这样。 我想制作尽可能多的按钮
numberoflist
并将三行
TESTTEST.txt
放在一个按钮中,如上所示

6、2、159、6、6、467每个数字都是
Businfo的列表
因此,我可以通过
businfolist[0]
businfolist[1]
businfolist[2]
等方式访问每个号码

首先,我为测试编写了这样的代码

    BoxLayout:
        orientation: 'vertical'
        size_hint: 1, 0.35
        padding: 0
on_parent:
    for i in range(root.numberoflist): txt = root.businfolist[i]; self.add_widget(Button(text= txt, id=txt))
但它不起作用。这是回溯

 Traceback (most recent call last):
   File "t2.py", line 65, in <module>
     presentation = Builder.load_file("t2.kv")
   File "/usr/local/lib/python2.7/dist-packages/kivy/lang/builder.py", line 301, in load_file
     return self.load_string(data, **kwargs)
   File "/usr/local/lib/python2.7/dist-packages/kivy/lang/builder.py", line 368, in load_string
     parser = Parser(content=string, filename=fn)
   File "/usr/local/lib/python2.7/dist-packages/kivy/lang/parser.py", line 392, in __init__
     self.parse(content)
   File "/usr/local/lib/python2.7/dist-packages/kivy/lang/parser.py", line 501, in parse
     objects, remaining_lines = self.parse_level(0, lines)
   File "/usr/local/lib/python2.7/dist-packages/kivy/lang/parser.py", line 605, in parse_level
     level + 1, lines[i:], spaces)
   File "/usr/local/lib/python2.7/dist-packages/kivy/lang/parser.py", line 605, in parse_level
     level + 1, lines[i:], spaces)
   File "/usr/local/lib/python2.7/dist-packages/kivy/lang/parser.py", line 615, in parse_level
     'Invalid property name')
 kivy.lang.parser.ParserException: Parser: File "/root/Desktop/hi/t2.kv", line 54:
 ...
      52:                padding: 0
      53:       on_parent:
 >>   54:           for i in range(root.lenbil): txt = root.businfolist[i]; self.add_widget(Button(text= txt, id=txt))
      55:
      56:<MyButton@Button>:
 ...
 Invalid property name
t2.kv


您的代码还存在一些其他问题(显示按钮后您会发现这些问题)以及您的帖子中的一些缩进错误。但是添加这些按钮的简单方法是在
站测试中添加一行

代替线路:

self.rpandgv(oo)
Clock.schedule\u once
确保仅在更新显示和填写
.ids
字典后运行代码。在
rpandgv()
方法的末尾,添加代码以添加按钮:

    for i in range(self.lenbil):
        txt = self.businfolist[i]
        self.ids.buttons.add_widget(Button(text=txt, id=txt))
此外,加上:

id: buttons
kv
BoxLayout
声明中,我认为您需要添加按钮(带有两个
MyButton
声明的按钮)

Clock.schedule_once(partial(self.rpandgv, oo))
self.rpandgv(oo)
    for i in range(self.lenbil):
        txt = self.businfolist[i]
        self.ids.buttons.add_widget(Button(text=txt, id=txt))
id: buttons