如何在 Kivy 中的屏幕更改时将文本加载到我的屏幕中?



我正在开发一个应用程序,其中一个屏幕有一些标签和文本输入字段。每当用户导航到此屏幕时,我都希望某种load()函数来检查 JSON 文件中的数据。如果找到数据,它可以将此数据加载到相应文本输入字段中的屏幕中。如果没有,那就不用担心了。

我能够轻松地从 JSON 文件中存储和检索数据,但对于我的一生,每当我导航到那里时,我似乎都无法弄清楚如何将这些信息存储到有问题的屏幕中!有没有办法让每次屏幕出现时运行一个函数来填充这些文本输入字段?

texttest.kv

WindowManager:
MainWindow:
id: main_screen
SetupWindow:
id: setup_screen
<SetupWindow>
name: "setup"
hostpy: hostkv
GridLayout:
cols:1
GridLayout:
cols: 2
Label:
text: "Host or IP: "
TextInput:
id: hostkv
multiline: False

texttestapp.py

...
...
...
class MainWindow(Screen):
pass

class SetupWindow(Screen):
hostpy = ObjectProperty(None)
def __init__(self,**kwargs):
super(SetupWindow,self).__init__(**kwargs)
self.hostpypy.Text = "This is a test"
class WindowManager(ScreenManager):
pass
...
...
...

如您所见,我尝试了__init__(self,**kwargs),但这似乎是错误的解决方案。我能做些什么来完成我需要的?

我能够找到答案:Kivy实际上有自己的API,这是我忽略的。具体来说,您可以使用 on_pre_enter(( 或 on_enter(( 来使其正常工作。它的文档位于此处:https://kivy.org/doc/stable/api-kivy.uix.screenmanager.html#kivy.uix.screenmanager.Screen

最新更新