Python Kivy:将函数变量应用于按钮文本
我有一些滚动可用的屏幕示例。 我正在测试这个示例以应用于我的应用程序 当我启动这个python文件时,我可以得到如下屏幕 但我想要的是上面这样。 我想制作尽可能多的按钮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
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