警告:忽略 class "Label" 重新声明

WARNING: Ignored class "Label" re-declaration

为了使所有标签的文本都支持标记,我在我的 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.

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

只需使用

<Label>:
    markup: True

使用 @ 表示法,您可以声明一个新的 dynamic subclass Label 派生自 Label.

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