无法在 kv 文件中调用 py 文件中定义的自身变量



我在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__方法中。

最新更新