如何调用迭代生成的kivy小部件

时间:2015-03-18 22:35:54

标签: python python-2.7 kivy

您好,我的代码与此类似

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循环中制作小部件,以允许在代码中的其他地方重新构建

0 个答案:

没有答案