Как сделать обмен данными между экранами kivy python?
Здравствуйте такая проблема пишу приложение очень упрощенного IMDb на kivy. Столкнулся с проблемой что не могу обмениваться данными между экранами (Например хочу сделать так чтобы после нажатии кнопки на первом экране, label принял и вывел его или чтобы создавалось определенное количество кнопок на втором экране, исходя из того какая кнопка била нажата на первом). Помогите пожалуйста!
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.core.window import Window
from kivy.uix.screenmanager import *
class MovieInfo(Screen):
def __init__(self, name="MovieInfo"):
super(MovieInfo, self).__init__(name=name)
alNavigationBar = AnchorLayout(anchor_x="center", anchor_y="top", padding=(25, 20, 25, 15))
glNavigationBar = GridLayout(cols=2, rows=1, size_hint_y=None)
backBtn = Button(text="<-", size_hint=(None, None), size=(100, 100), on_press=self.pressBackButton)
glNavigationBar.add_widget(backBtn)
alNavigationBar.add_widget(glNavigationBar)
informs = BoxLayout(orientation='vertical', spacing=15, size_hint_y=None, padding=(25, 25, 25, 10))
informs.bind(minimum_height=informs.setter('height'))
for i in range(50):
label = Label(text=f"{i}", size_hint_y=None, font_size='18sp')
informs.add_widget(label)
scrollInforms = ScrollView(size_hint=(1, None), size=(Window.width, Window.height - 100))
scrollInforms.add_widget(informs)
self.add_widget(alNavigationBar)
self.add_widget(scrollInforms)
def pressBackButton(self, instance):
self.manager.current = "MovieList"
class Movies(Screen):
def __init__(self, name="MovieList"):
super(Movies, self).__init__(name=name)
alNavigationBar = AnchorLayout(anchor_x="center", anchor_y="top", padding=(25, 20, 25, 15))
glNavigationBar = GridLayout(cols=2, rows=1, size_hint_y=None)
backBtn = Button(text="<-", size_hint=(None, None), size=(100, 100), on_press=self.pressBackButton)
glNavigationBar.add_widget(backBtn)
alNavigationBar.add_widget(glNavigationBar)
moviesList = BoxLayout(orientation='vertical', spacing=15, size_hint_y=None, padding=(25, 25, 25, 10))
moviesList.bind(minimum_height=moviesList.setter('height'))
for i in range(50):
movieButton = Button(text=f"{i}", size_hint_y=None, height=140, on_press=self.pressMovieButton)
moviesList.add_widget(movieButton)
scrollMoviesList = ScrollView(size_hint=(1, None), size=(Window.width, Window.height - 120))
scrollMoviesList.add_widget(moviesList)
self.add_widget(alNavigationBar)
self.add_widget(scrollMoviesList)
def pressBackButton(self, instance):
self.manager.current = "GenresList"
def pressMovieButton(self, instance):
print(instance.text)
self.manager.current = "MovieInfo"
class Genres(Screen):
def __init__(self, name="GenresList"):
super(Genres, self).__init__(name=name)
alInputText = AnchorLayout(anchor_x="center", anchor_y="top", padding=(10, 20, 10, 0))
inputText = TextInput(hint_text='Enter movie name', multiline=False, font_size=40, size_hint=(0.97, 0.05),
on_text_validate=self.inputMoviesName)
alInputText.add_widget(inputText)
genresList = GridLayout(cols=2, spacing=15, size_hint_y=None, padding=(25, 0, 25, 10))
genresList.bind(minimum_height=genresList.setter('height'))
for i in range(50):
genreButton = Button(text=f"{i}", size_hint_y=None, height=350, on_press=self.pressGenreButton)
genresList.add_widget(genreButton)
scrollGenresList = ScrollView(size_hint=(1, None), size=(Window.width, Window.height - 100))
scrollGenresList.add_widget(genresList)
self.add_widget(alInputText)
self.add_widget(scrollGenresList)
def inputMoviesName(self, instance):
print(instance.text)
instance.text = " "
self.manager.current = "MovieList"
def pressGenreButton(self, instance):
print(instance.text)
self.manager.current = "MovieList"
class Application(App):
def build(self):
self.title = "MyIMDb"
scrManager = ScreenManager(transition=NoTransition())
screens = [
Genres(),
Movies(),
MovieInfo()
]
for i in screens:
scrManager.add_widget(i)
return scrManager
if __name__ == "__main__":
Application().run()