Kivy id:任务

时间:2013-11-18 20:31:07

标签: python-2.7 kivy

在Kivy中,您可以从Python动态地为widget ID属性赋值。虽然可以在Python中动态创建小部件,但我无法访问那些动态创建的小部件其他属性,即更新 label.text 或检索 text_input.text 属性而不使用小部件ID self.id.text

我正在寻找一种在Python中放置id =“动态字符串属性”的方法,以便以后检索或更改小部件属性。看起来用户可访问的小部件需要在Python或Kivy中明确定义。

  • Python
label1 = Label(text='test',...) # label1 becomes the property 
self.label1.text = 'new value'
  • Kivy
label1: label1
Label:
    id: label1
    text: 'test'

是否有另一种方法可以在动态创建的小部件中访问属性?

我尝试将id传递给函数,但是按预期的赋值操作会替换传递的信息。

1 个答案:

答案 0 :(得分:1)

docs中解释了另一种方法:

请考虑my.kv中的以下代码:

<MyFirstWidget>:
    # both these variables can be the same name and this doesn't lead to
    # an issue with uniqueness as the id is only accessible in kv.
    txt_inpt: txt_inpt
    Button:
        id: f_but
    TextInput:
        id: txt_inpt
        text: f_but.state
        on_text: root.check_status(f_but)

在myapp.py中:

class MyFirstWidget(BoxLayout):

    txt_inpt = ObjectProperty(None)

    def check_status(self, btn):
        print('button state is: {state}'.format(state=btn.state))
        print('text input text is: {txt}'.format(txt=self.txt_inpt))