Python 如何从在_init__中初始化的变量设置标签中的文本?

Python 如何从在_init__中初始化的变量设置标签中的文本?,python,kivy,Python,Kivy,这是我的t.p from kivy.app import App from kivy.uix.boxlayout import BoxLayout class Simple(BoxLayout): def __init__(self, **kwargs): super(Simple, self).__init__(**kwargs) # THIS IS SIMLE EXAMPLE, IN PRACTICE I AM READING VALUE FRO

这是我的t.p

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout


class Simple(BoxLayout):
    def __init__(self, **kwargs):
        super(Simple, self).__init__(**kwargs)

        # THIS IS SIMLE EXAMPLE, IN PRACTICE I AM READING VALUE FROM TEXT FILE
        self.sometext = 'Hello from Init.'

    def set_text(self):
        return self.sometext # error: 'Simple' object has no attribute 'sometext'
        #return "Hello World from Simple(BoxLayout)" # this is working 


class TApp(App): 
    def build(self):
        return Simple()


TApp().run()
我的t.kv

<Simple>:
    Label:
        #text: 'Hello World' # THIS IS WORKING
        text: root.set_text()
:
标签:
#文字:“你好,世界”#这是工作
text:root.set_text()
所以这是行不通的 需要做什么才能让它工作

我希望这是可能的


谢谢

这是我在kivy邮件列表中的回复:

看起来kv语言在之前调用了
set\u text
\uuuu init\uuuuu
,这看起来很奇怪,但确实解释了您的问题

你可以用不同的方法修复它,但我会用 让事情变得简单的kivy属性。我在学校里做了一个榜样 . 虽然默认值为 设置为
''
,kv lang可以自动检测到它是一个属性 并进行绑定,以便当
\uuuuu init\uuuuu
更改时,文本 更新

链接的示例代码为:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.properties import StringProperty

Builder.load_string('''
<Simple>:
    Label:
        #text: 'Hello World' # THIS IS WORKING
        text: root.sometext
''')

class Simple(BoxLayout):
    sometext = StringProperty('')

    def __init__(self, **kwargs):
        super(Simple, self).__init__(**kwargs)

        self.sometext = 'Hello from Init.'

class TApp(App):
    def build(self):
        return Simple()


TApp().run()
从kivy.app导入应用
从kivy.uix.boxlayout导入boxlayout
从kivy.lang导入生成器
从kivy.properties导入StringProperty
Builder.load_字符串(“”)
:
标签:
#文字:“你好,世界”#这是工作
text:root.sometext
''')
简单类(BoxLayout):
sometext=StringProperty(“”)
定义初始(自我,**kwargs):
超级(简单,自我)。\uuuuu初始化(**kwargs)
self.sometext='Hello from Init'
TApp级(应用程序):
def生成(自):
返回Simple()
TApp().run()

您是否测试过这个简单的示例,您直接设置了
self.sometext
?问题可能出在从文件中检索值的代码中。不理解。你能提供代码样本吗?