如何在KV lang中设置来自父项的自定义窗口小部件的文本?

问题描述 投票:0回答:1

假设您有一个自定义布局,其中包含不应在本地设置的标签

<CustomWidget>:
    Label:
        id: l1
    Label:
        id: l2

在这种情况下,CustomLabels是诸如GridLayout之类的布局。当使用此自定义窗口小部件时,您需要设置文本,如果在Python中完成操作则很丑陋。可以从奇异鸟身上完成吗?例如,

SomeLayout:
    ...
    CustomWidget:
        l1.text: "hello, "
        l2.text: "world!"
    ...

当然,这会在第一次分配l1.text时引发语法错误。有什么想法吗?

python text label kivy kivy-language
1个回答
0
投票

如果您用一些CustomWidget定义StringProperties,如下所示:

class CustomWidget(SomeOtherLayout):
    l1_text = StringProperty()
    l2_text = StringProperty()

然后稍微更改kv

<CustomWidget>:
    Label:
        text: root.l1_text
    Label:
        text: root.l2_text

然后您可以将CustomWidget用作:

SomeLayout:
    CustomWidget:
        l1_text: "hello, "
        l2_text: "world!"
© www.soinside.com 2019 - 2024. All rights reserved.