Для доступа к переменной, объявленной внутри класса, первое, что эта переменная должна быть атрибутом класса, чтобы область действия была больше, но, как и в вашем случае, переменная является локальной, и она будет исключена, когда оназавершает выполнение функции.
С другой стороны, решение основано на доступе к другому Экрану через ScreenManager
, и при доступе объекта к атрибуту для него мы используем метод get_screen ():
CL_SecondWindow --> ScreenManager --> CL_FirstWindow --> obj_random
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.properties import ObjectProperty
class CL_FirstWindow(Screen):
def change_screen(self):
self.obj_random = CL_Random()
self.manager.current = 'second_window'
class CL_SecondWindow(Screen):
scond_prop = ObjectProperty(None)
def change_screens(self):
first_screen = self.manager.get_screen('first_window')
print(first_screen.obj_random.x)
self.parent.current = 'first_window'
class ScreenManagement(ScreenManager):
pass
class CL_Random:
def __init__(self):
self.x = 5
presentation = Builder.load_file("rough2.kv")
class app(App):
def build(self):
return presentation
obj_app = app()
obj_app.run()