Как изменить hint_text у TextInput в kivy python?

Смотрите, изначально я думал что смогу просто изменить hint_text. Нужно изменить значение hint_text у Text_input который находится на другом экране. Но я не могу получить доступ к его id, TextInput находится в другом классе (на другом экране) . Для подробности вот кусок кода:

class FirstScreen(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)


class SecondScreen(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def previous_button(self):
        self.manager.current = 'first'

    def messageShow(self):
        try:
            print("Text:", float(self.ids['price'].text.replace(',', '.').replace('б', '.')))
        except:
            pass


Builder.load_string(f'''
<FirstScreen>:
    GridLayout:
        cols: 4
        Button:
            id: iron
            text: 'Чёрный'
            font_size: 50
            on_press: # Здесь нужна функция которая будет изменять hint_text у TextInput
                      # но проблема в том что этот TextInput находится на другом экране, то есть в другом классе
                      # и я не могу получить доступ к его id
            on_press: root.manager.current='second'
<SecondScreen>:
    BoxLayout:
        orientation:'vertical'
        padding: (500, 10)
        TextInput:
            id: weight
            multiline: False
            font_size: 100
            size_hint: (1, .4)
        TextInput:
            id: price
            hint_text: '0' # Этот hint_text нам и нужно изменить
            multiline: False
            font_size: 100
            size_hint: (1, .4)
            on_text_validate: root.messageShow()
        Button:
            text:'Добавить'
            size_hint:(1,0.2)
        Button:
            text:'Previous'
            size_hint:(1,0.2)
            on_press:root.previous_button()
''')


class TestApp(App):
    def build(self):
        global quantity
        sm = ScreenManager()
        sm.add_widget(FirstScreen(name='first'))
        sm.add_widget(SecondScreen(name='second'))
        return sm


if __name__ == "__main__":
    TestApp().run()

Ответы (1 шт):

Автор решения: Sergio

Вы можете создать функцию, которая при нажатии на кнопку, будет перенаправлять в другой класс (manager.current = “nameScreen”) и при переходе в этот класс - будет изменяться сам hint_text. То есть, Вы сможете в этом же классе, где TextInput, получить нужный Вам id. Особенность может быть та, что ScreenManager сразу загружает все обьекты со всех Screen. Тогда Вам нужно через Clock.schedule_once реализовать переход до функции, которая будет непосредственно изменять hint_text.

→ Ссылка