在 kv py 对象中自定义

Posted

技术标签:

【中文标题】在 kv py 对象中自定义【英文标题】:Customize in kv py object 【发布时间】:2020-03-19 05:33:07 【问题描述】:

我需要知道如何自定义已经实例化的对象。

#Archivo py
class Principal(ScreenManager):
    def __init__(self, **kwargs):
        super(Principal, self).__init__(**kwargs)
        self._principal=Screen(name='Principal')
        self._layout=AnchorLayout()
        self._boton=Button(text='Hola')

        self._layout.add_widget(self._boton)
        self._principal.add_widget(self._layout)
        self.add_widget(self._principal)
#Archivo kv
#:kivy 1.11.1
<Principal>:
    root._boton.text:'hola2'    #This line throws me error. How do I change the text of the button?

【问题讨论】:

请用英文在Stack Overflow提问。 【参考方案1】:

问题是 kivy 在kv 规则中期望Principal 的属性。由于没有这样的属性,它会引发错误。您可以通过创建执行所需操作的属性来避免该错误。如果您将Principal 类更改为:

class Principal(ScreenManager):
    button_text = StringProperty('Hola') # new attribute

    def __init__(self, **kwargs):
        super(Principal, self).__init__(**kwargs)
        self._principal=Screen(name='Principal')
        self._layout=AnchorLayout()
        self._boton=Button(text=self.button_text)  # use of new attribute
        self._layout.add_widget(self._boton)
        self._principal.add_widget(self._layout)
        self.add_widget(self._principal)

这会在Principal 类中创建一个名为button_text 的属性,并将_botontext 设置为该属性。然后在kv 文件中,引用该新属性:

<Principal>:
    button_text:'hola2'    #This line no longer throws me error.

【讨论】:

以上是关于在 kv py 对象中自定义的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 中自定义找不到页面(404)?

Swift中自定义对象和自定义对象数组的通用属性[重复]

Autodesk forge 在 Forge Configurator 发明者中自定义转换对象

java中集合中自定义对象向下转型问题

如何在 Django CRUD 中自定义 auth.User 管理页面?

如何使用 Bootstrap 在 Django 中自定义复选框和收音机?