3

为了使所有标签的文本支持标记,我在我的 kivy 文件顶部使用以下 kivy 语言代码:

<Label@Label>:
    markup: True

稍后使用时:

<SomeWidget>:
    Label:
        text: '[b]Dog[/b]' 

我得到一个标签,其文本'Dog'按预期加粗。因此,我所有的标签都按预期markup设置。True

但是,我收到以下警告:

[WARNING           ] [Factory     ] Ignored class "Label" re-declaration. Current -  module: kivy.uix.label, cls: None, baseclass: None, filename: None. Ignored -  module: None, cls: None, baseclass: Label, filename: /home/Projects/gui/maingui.kv.

为什么我会收到此警告?我应该以不同的方式做某事吗?

4

1 回答 1

3

只需使用

<Label>:
    markup: True

使用该@表示法,您可以声明一个新的动态子类,该子类 Label派生自Label.

在 kv lang 中创建动态类很有用<MyLabel@Label>:,特别是如果稍后在 python 中不需要对该类的引用,以防止重新定义行为可能引起的任何冲突(Label在其他 default 中广泛使用Widget,并更改其一般属性可能会无意中影响其他小部件的外观)。

于 2016-03-27T12:07:58.500 回答