我想用 kv 语言动态制作很多按钮。 但是现在我不能...... 我现在将在此处显示源代码。
BoxLayout:
orientation: 'vertical'
pos: root.pos
size: root.size
GridLayout:
rows: 2
spacing: 5
padding: 5
Button:
text: "X0"
on_press: root.X(0)
Button:
text: "X1"
on_press: root.X(1)
我想在代码下做出像
BoxLayout:
orientation: 'vertical'
pos: root.pos
size: root.size
GridLayout:
rows: 2
spacing:5
padding:5
for i
Button:
text: "X#{i}"
on_press: root.X(i)
我该怎么办?
最佳答案
这样的循环在 kv 语言中是不可能的,除了做一些肮脏的 hack。
要动态创建一组按钮,请使用 ListView或者将它们添加到 py 文件中的循环中。
例子:
from functools import partial
class MyGrid(GridLayout):
def __init__(self, **kwargs):
super(MyGrid, self).__init__(**kwargs)
self.add_buttons()
def add_buttons(self):
for i in xrange(5):
button = Button(
text='X' + str(i),
on_press=partial(self.X, number=i)
)
self.add_widget(button)
def X(self, caller, number):
print caller, number
关于python - 我怎样才能用kv语言动态地制作很多按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856891/