【问题标题】:How can I load text into my screen on screen change in Kivy?如何在 Kivy 屏幕更改时将文本加载到我的屏幕中?
【发布时间】:2020-01-19 21:56:37
【问题描述】:

我正在开发一个应用程序,其中我的一个屏幕有一些标签和文本输入字段。每当用户导航到此屏幕时,我想要某种 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),但这似乎是错误的解决方案。我可以做些什么来完成我需要的事情?

【问题讨论】:

    标签: python python-3.x kivy kivy-language


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 2013-10-29
      相关资源
      最近更新 更多