使用KV语言的课程

时间:2018-09-28 00:37:37

标签: python kivy

MyScreenManager:
    id: myscreenmanager
    transition: FadeTransition()
    ScreenOne:
    ScreenTwo:

<Widget>:
    font_name: 'example.ttf'

<ScreenOne>:
     ...

<ScreenTwo>:
     ...

当我用KV语言上课时,我想知道ClassName:<ClassName>:有何不同。

在我看来,只有一个ClassName:被称为根对象,否则它将说

  

“。kv只允许一个根对象”

因此,据我所知,ClassName:通常是屏幕管理器。

那么它们如何表现不同?为什么我不能只做<MyScreenManager>:

(它没有给出任何错误,但无法正常工作。)

这真让我感到困惑。

1 个答案:

答案 0 :(得分:1)

value="nomeCantiere"是规则,如果kivy遇到此类的小部件,它将应用拟合规则的内容。如果您了解某些Web开发,则Kivy文档会将其与CSS规则进行比较。

<class>:定义了根窗口小部件。在kivy小部件中,它形成一棵树,因此每个小部件都有一个父级,并且有许多子级-除了一个根父级小部件之外,没有父级。这棵树很重要,因为它定义了按什么顺序绘制窗口小部件。如果您有两个根,应该按哪个顺序绘制? (如果您只说“先一个,然后再说第二个”,那么您也可以只创建一个根,然后将旧根按此顺序添加到新根中)。只有一个根可以大大简化这一过程。

根通常是某种布局或容器,因为您通常希望在应用程序中显示多个小部件,而使用容器可以简化此过程。但是您也可以使用带有按钮作为根小部件的kivy应用程序。

您不必在kv文件中包含根窗口小部件。这可能是有意义的,例如当有多个不同样式的kv文件时。根窗口小部件也可以用App.build()方法构造。

Kv文件还有另外两种规则,请参见documentation。还说明了规则和根窗口小部件之间的区别。