我在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文件中调用自变量?还是有一种方法可以将我的变量共享到2个类中,以便以后在Test()类中使用它?
请允许我指出,当我不在.kv文件中制定规则并在构建中创建变量时,它可以正常工作。
谢谢
答案 0 :(得分:0)
如果运行此命令,则会有一个Traceback,它说Test()没有名为mytext的变量,这很正常,因为我的变量是self.mytext
您的理解是错误的,变量不是self.mytext
,该行代码设置了mytext
实例的Test
属性。在kv文件中以root.mytext
的身份访问是完全合理的。
您的问题是,您从未调用myfunc
,因此也从未将self.mytext
设置为任何值,因此您会看到错误。
尝试将self.mytext = "initial value
放在__init__
的{{1}}方法中。