【发布时间】:2020-09-20 16:14:19
【问题描述】:
我看到很多非常相似的问题被问到,但似乎没有一个答案有效。我将一个程序剥离为非常基础的程序,但它似乎仍然无法正常工作,这是代码:
.kv 文件
WindowManager:
FirstWindow:
SecondWindow:
<FirstWindow>:
name: 'first'
GridLayout:
cols: 1
size: root.size
GridLayout:
cols: 2
Label:
text: 'Put some text'
TextInput:
id: item
Button:
on_release: app.root.current = 'second'
<SecondWindow>:
name: 'second'
BoxLayout:
orientation: 'vertical'
Label:
id: bi
text: root.manager.get_screen('first').ids.item.text
.py 文件 是非常基础的文件,没有可能与程序冲突的额外信息。因此,当我在标签中输入文本时,它会在 第二屏幕 上返回一个空字符串。有人可以帮忙吗?
【问题讨论】:
-
问题可能是您的
text:行运行了一次并且从未重新评估,因为kv 解析器无法识别您指的是可以绑定到的东西。 -
那么我可以在
text之后执行一行代码来重新评估该行吗?还是通过 .py 文件完成 -
我会寻求以不同的方式实现您的结果。例如,您的 textinput 可能有
on_text: app.text = self.text,而您的 SecondWindow 可能有text: app.text(当然,您还需要将 app.text 声明为 StringProperty)。这只是一个基本的解决方案,this page 包含更多替代方案。 -
刚试过这个,我得到一个错误说
AttributeError: 'ExampleApp' object has no attribute 'text'。当我使用text: app.text行时? -
您是否做了“当然需要将 app.text 声明为 StringProperty”部分?这意味着在您的 App 类中写入
text = StringProperty()。