我在kivy中的.py文件和.kv文件之间共享变量时遇到问题。
在解释我的要求之前,这里有一些代码。
.py文件
from kivy.app import App
from kivy.boxlayout import BoxLayout
class Test(BoxLayout):
def myfunc(self):
self.mytext = 'blabla'
class MyApp(App):
def build(self):
return Test()
if name == '__main__':
MyApp.run()
.kv文件
<Test>
Button:
text: root.mytext
如果我运行这个,我有一个Traceback,它说Test((没有名为mytext的变量,这很正常,因为我的变量是self.mytext
但是,当我用root.self.mytext更改.kv文件中的变量时,我有一个Traceback,它说Test((中没有变量"self",这也是正常的。
那么,如何在Test((类中调用我的.kv文件中的自变量呢?或者有没有一种方法可以将我的变量共享到这两个类中,以便稍后在Test((类中使用它?
我可以确切地说,当我不在.kv文件中制定规则,并在构建中制定变量时,它可以正常工作。
感谢
如果我运行这个,我有一个Traceback,它说Test((没有名为mytext的变量,这很正常,因为我的变量是self.mytext
您在这里的理解是错误的,变量不是self.mytext
,那行代码设置了Test
实例的mytext
属性。在kv文件中,将其作为root.mytext
访问是完全合理的。
您的问题是,您从未调用myfunc
,因此从未将self.mytext
设置为任何值,因此会出现您看到的错误。
尝试将self.mytext = "initial value
放在Test
的__init__
方法中。