在下面的文件中将"MyKivyRoot"设置为我的根窗口小部件时,我遗漏了哪些步骤?
我的印象是. kv文件中最上面/最左边的小部件会自动被当作根小部件,但显然我错过了一些关键步骤。
Using "app.root.show_text()" doesn't seem to point to the right place (I get a "'NoneType' object has no attribute 'show_text'" error).
But I CAN access the method from within the < MyKivyRoot > block using "root.show_text()"
我忘了做什么?
下面是我的'main.py'的简化版本:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class MyKivyRoot(BoxLayout):
def show_text(self):
return "Here is your text"
class NewClass(BoxLayout):
pass
class MyKivyApp(App):
pass
if __name__ == '__main__':
MyKivyApp().run()
这是我的Kivy.kv
MyKivyRoot:
<MyKivyRoot>:
Label:
text: root.show_text()
NewClass
<NewClass>:
Label:
text: app.root.show_text()
我一直在研究《用Kivy创建应用程序》这本书,书中的代码没有任何问题(我有使用PySide的经验)。但当我试图自己进行实验时,我马上就被这个基本的(我假设的)问题难住了。据我所知,我的布局与书中的(工作)代码完全相同,但显然我忽略了一些东西。
任何帮助将不胜感激!
2条答案
按热度按时间axzmvihb1#
您需要返回一个根部件。
yqkkidmi2#
您需要在根小部件声明中声明子小部件。尖括号表示法用于定义小部件,但它们也必须声明。用户定义的变量必须在小部件定义中声明,以便它们可以作为小部件声明的参数传递。