Если я правильно понимаю, что вы хотите сделать, это использовать кнопку на странице X (Main
?), Чтобы изменить текст на странице Y (Page2
?).Я не эксперт по Kivy, так что может быть лучше, но вот несколько мыслей:
1) Я попытался дать атрибут класса parent
для всех экранов, который оказалсяплохая идея, потому что имя уже использовалось Kivy.Вы можете просто изменить его на parent_
или еще что-нибудь и попробовать.Вам нужно передать «родителя» в качестве параметра __init__
при создании:
class ScreenManagement(ScreenManager):
def __init__(self, children_, **kwargs):
# you might need to save the children too
self.children_ = children_
def add_child(self, child):
# maybe as dict
self.children_[child.name] = child
class SecondScreen(Screen):
def __init__(self, parent_, **kwargs):
super().__init__(**kwargs)
# maybe the screen manager or the main app?
self.parent_ = parent_
self.name_ = "Second"
....
def clear_inputs(self, text_inputs):
....
class MainScreen(Screen):
def __init__(self, parent_, **kwargs):
super().__init__(**kwargs)
# maybe the screen manager or the main app?
self.parent_ = parent_
# you may want to
....
# Get the appropriate screen from the parent
self.parent_.children_["Second"].clear_inputs(...)
2) Я также видел другой путь из учебника YouTube .Вместо непосредственного запуска приложения присвойте его переменной и создайте ссылку на эту переменную.Это может потребовать вмешательства для продвинутых пользователей:
# Use the global variable within your classes/methods
class Whatever:
def whatever2(self, params):
app.something()
....
app = testiApp()
app.run()