Есть ли способ получить доступ к другим объектам класса с помощью идентификаторов в Kivy? - PullRequest
0 голосов
/ 22 января 2019

Я создаю метод, который меняет язык в моем приложении Kivy.

Я пытаюсь получить доступ к объектам из других классов, используя идентификаторы .

часть моего .py кода:

    class SettingsScreen(Screen):
        def change_langg(self):

           #MainMenu screen
           self.main = MenuScreen()
           self.exit_but = self.main.ids['exit']
           #Settings screen
           self.back1_but = self.ids['back1']
           self.lang_but = self.ids['language']
           self.fullscr_but = self.ids['fullscr']

           if self.lang_but.text == 'Бг':

              #Main menu screen
               self.exit_but.text = 'Изход'
               #Settings screen
               self.back1_but.text = 'Назад'
               self.fullscr_but.text = 'Цял екран'
               self.lang_but.text = 'En'

           elif self.lang_but.text == 'En':
              #Main menu screen
              self.exit_but.text = 'Exit'
              #Settings screen
              self.back1_but.text = 'Back'
              self.fullscr_but.text = 'Fullscreen'
              self.lang_but.text = 'Бг'

Я ожидал, что текст изменится на обоих экранах, но он изменяется только на экране настроек. Как я уже упоминал выше, у меня нет ошибок, все идентификаторы верны. У вас есть какие-нибудь предложения?

1 Ответ

0 голосов
/ 16 февраля 2019

У меня есть решение, которое работает даже после отображения экрана.Код и комментарии должны быть понятны сами, в противном случае свяжитесь со мной по непонятным частям

othrscrn = '' #global variable where the memory location of the other screen can be saved

    class OtherScreen(Screen):
        def __init__(self, *args): #init method to run immediately the code is started
            super(OtherScreen, self).__init__(*args)
            global othrscrn #declaring variable 'othrscrn' a global variable
            othrscrn = self #saving the class' memory location to global variable 'othrscrn'

    class Settings(Screen):
            def change_lang(self):
                global othrscrn #accessing the variable 'othrscrn'
                x = othrscrn #instanciating the class as a new variable x
                lan = x.ids['language'] #acessing the class' ids using its ids
                lan.text = ''#any chnage you want to implement
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...