您好,我的代码与此类似
test.kv
<SomeWidget>:
Button:
text:'Begin'
pos:(0,0)
on_press:root.run_me()
GridLayout:
iD: grid_layout
cols:3
main.py
class SomeWidget(FloatLayout):
def run_me(self):
r=1
grid_layout=self.ids.grid_layout
for i in array_of_strings:
grid_layout.add_widget(Label(text=i,id='idea_label_'+str(r)))
grid_layout.add_widget(Slider(on_value=slider_slid(self),id='Slider_'+str(r)))
grid_layout.add_widget(Label(id='value_label_'+str(r)))
r+=1
value_label=self.ids['value_label_'+str(r)] # this line does not seem to work
value_label.text='this is the last label: number '+str(r)
这里我生成一个带有文本'i'的标签,一个带有绑定事件的滑块,以及我想要稍后执行某些操作的另一个标签。由于我想在代码中的其他地方引用这些小部件,我试图给它们每个唯一的id,例如'idea_label _'+ str(r):r + = 1但是当我尝试用some_var = self.ids引用时[ 'idea_label _'+ str(r)]它不起作用
我感觉这是因为我错误地分配了id,或者无法从python端分配id,只有.kv端
是否有更好的方式或其他方式在for循环中制作小部件,以允许在代码中的其他地方重新构建