Задача
Я использую kivy и ScreenManager для создания графического интерфейса и использования множества экранов.
У меня есть класс Screen1 и одна переменная внутри него, названная num
, значение которой равно 1.
В графическом интерфейсе Screen1 есть кнопка, и когда я нажимаю кнопку, он вызывает def calledwithbutton
, который изменяет переменную num
на self.num = 2
, а затем изменяет экран на Экран 2.
Класс Screen2 имеет переменную var
, значение которой равно Screen1().num
.
Графический интерфейс Screen2 имеет метку, текст str(var)
Ожидаемый результат: текст метки графического интерфейса Screen2 = '2'
Но реальный результат заключается в том, что текст метки графического интерфейса экрана 2 = '1'
Как изменить текст метки графического интерфейса экрана 2 на '2'
на основе переменной num
?
.py код
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
class Manager(ScreenManager):
pass
class Screen1(Screen):
num = 1
def calledwithbutton(self):
self.num = 2
self.parent.current = 'Screen 2'
class Screen2(Screen):
var = Screen1.num
class RootApp(App):
def build(self):
return Manager()
RootApp().run()
.kv код
<Manager>:
Screen1:
name: 'Screen 1'
Screen2:
name: 'Screen 2'
<Screen1>:
Button:
text: 'This is a button'
on_press: root.calledwithbutton()
<Screen2>:
Label:
text: str(root.var)