Постоянное использование user_input в приложении kivy - PullRequest
0 голосов
/ 26 октября 2019

После того, как я собрал пользовательский ввод в kivy, я хочу использовать его для обновления всех моих экранов (организованных в классах). Проблема заключается в том, что когда я собираю имя пользователя с первого экрана, мне трудно использовать имя пользователя для обновления на других экранах. Например, второй экран содержит метку, которая говорит привет, имя пользователя. Однако после переключения на второй экран он сохраняет свое значение по умолчанию. Что я пробовал:

  • Я попытался создать функцию во втором окне и использовать возвращаемое значение (которое содержит имя пользователя) в качестве текста для метки. Для этого мне пришлось сначала его инициализировать. К сожалению, кажется, что несмотря на то, что я вызываю функцию, когда я переключаюсь на следующий экран (нажатием кнопки), метка уже инициализирована и не изменит своего значения.
  • Я пытался найтифункция on_load в kivy, чтобы обновлять ее при загрузке окна, но я не смог ее найти.

    Код

class MainWindow (Screen):

    '''This is the mainwindow class where I collect the user input'''

    password = ObjectProperty(None)
    username = ObjectProperty(None)
    active_user = ObjectProperty(None)
    def check(self):
        if self.password.text in Student.LIST_OF_STUDENTS.keys():
            self.active_user = Student.LIST_OF_STUDENTS[self.password.text]

            #After collecting user input I tried setting the username to SeconWindow's attribute (user)
            #So when I click the submit button and it verifies, it would change the username in the second window

            SecondWindow.user = self.active_user.club
            return True

class SecondWindow (Screen):

    '''THis is the Second window and its property user'''
    user = Student.LIST_OF_STUDENTS['123'].club

Это файл Kv, связывающий второе окно

<SecondWindow>

    name: 'second'
    FloatLayout:
        Label
            text: root.user
            pos_hint: {'y':0.9, 'x':0.1}
            text_size: self.size
            font_size: 30

Однако, когдаОн переключается на второе окно, метка просто сохраняет свое первоначальное имя пользователя, а не переключается на «новое». Хотя я изменил его с помощью кнопки «Отправить» в первом классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...