MyScreenManager:
id: myscreenmanager
transition: FadeTransition()
ScreenOne:
ScreenTwo:
<Widget>:
font_name: 'example.ttf'
<ScreenOne>:
...
<ScreenTwo>:
...
当我用KV语言上课时,我想知道ClassName:
与<ClassName>:
有何不同。
在我看来,只有一个ClassName:
被称为根对象,否则它将说
“。kv只允许一个根对象”
因此,据我所知,ClassName:
通常是屏幕管理器。
那么它们如何表现不同?为什么我不能只做<MyScreenManager>:
?
(它没有给出任何错误,但无法正常工作。)
这真让我感到困惑。
答案 0 :(得分:1)
value="nomeCantiere"
是规则,如果kivy遇到此类的小部件,它将应用拟合规则的内容。如果您了解某些Web开发,则Kivy文档会将其与CSS规则进行比较。
<class>:
定义了根窗口小部件。在kivy小部件中,它形成一棵树,因此每个小部件都有一个父级,并且有许多子级-除了一个根父级小部件之外,没有父级。这棵树很重要,因为它定义了按什么顺序绘制窗口小部件。如果您有两个根,应该按哪个顺序绘制? (如果您只说“先一个,然后再说第二个”,那么您也可以只创建一个根,然后将旧根按此顺序添加到新根中)。只有一个根可以大大简化这一过程。
根通常是某种布局或容器,因为您通常希望在应用程序中显示多个小部件,而使用容器可以简化此过程。但是您也可以使用带有按钮作为根小部件的kivy应用程序。
您不必在kv文件中包含根窗口小部件。这可能是有意义的,例如当有多个不同样式的kv文件时。根窗口小部件也可以用App.build()方法构造。
Kv文件还有另外两种规则,请参见documentation。还说明了规则和根窗口小部件之间的区别。