Как я могу загрузить текст в мой экран при смене экрана в Kivy? - PullRequest
0 голосов
/ 20 января 2020

Я работаю над приложением, в котором на одном из моих экранов есть метки и поля ввода текста. Всякий раз, когда пользователь переходит на этот экран, я бы хотел, чтобы какая-то функция 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), но, похоже, это неправильное решение. Что я могу сделать для достижения sh того, что мне нужно?

1 Ответ

0 голосов
/ 20 января 2020

Мне удалось найти ответ: для этого у Kivy есть собственный API, который я упустил. В частности, вы можете использовать on_pre_enter () или on_enter (), чтобы заставить это работать. Документация для этого находится здесь: https://kivy.org/doc/stable/api-kivy.uix.screenmanager.html#kivy .uix.screenmanager.Screen

...