class ThirdScreen(Screen): def __init__(self, **kwargs): super().__init__(**kwargs) self.my_screen = Builder.load_string('<ThirdScreen>') return self.my_screen def otvet(self, text): n = [ '- Устный счёт -', '- Скорость Пети -', '- Пять кружков -', '- Зарплата -'] otvety = {1 : '1', 2 : '4 часа', 3 : '1 Вечер', 4 : '225 рублей'} if text == otvety[n.index(self.my_screen.ids.my_name) + 1]: self.manager.current = 'Four'
Вот код целиком:
import kivy from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.lang import Builder from kivy.uix.gridlayout import GridLayout from kivy.uix.screenmanager import ScreenManager, Screen from kivy.uix.textinput import TextInput Builder.load_string(''' <MainScreen>: BoxLayout: orientation: 'vertical' padding: 90 spacing: 40 Label: text: 'Название приложения' font_size: 30 Button: size_hint: 1, 0.4 text: 'Математические задачи' on_release: root.manager.current = 'Second' Button: size_hint: 1, 0.4 text: 'Логические задачи' <SecondScreen>: BoxLayout: orientation: 'vertical' spacing: 20 Button: size_hint: 0.2, 0.1 pos_hint:{'x': 0.01, 'top': 0.1} text: '<Назад' on_release: root.manager.current = 'Main' Label: size_hint: 1, 0.2 text: 'Математические задачи' font_size: 22 GridLayout: rows: 2 padding: 40 Button: text: '1' on_release: root.manager.screens[2].ids.my_name.text = '- Устный счёт -' root.manager.screens[2].ids.my_label.text = root.zadachy[1] root.manager.current = 'Third' Button: text: '2' on_release: root.manager.screens[2].ids.my_name.text = '- Скорость Пети -' root.manager.screens[2].ids.my_label.text = root.zadachy[2] root.manager.current = 'Third' Button: text: '3' on_release: root.manager.screens[2].ids.my_name.text = '- Пять кружков -' root.manager.screens[2].ids.my_label.text = root.zadachy[3] root.manager.current = 'Third' Button: text: '4' on_release: root.manager.screens[2].ids.my_name.text = '- Зарплата -' root.manager.screens[2].ids.my_label.text = root.zadachy[4] root.manager.current = 'Third' <ThirdScreen>: BoxLayout: orientation: 'vertical' Button: size_hint: 0.2 , 0.1 pos_hint: {'x': 0.01, 'top': 0.1} text: '<Назад' on_release: root.manager.current = 'Second' Label: id: my_name size_hint: 1, 0.2 text: 'Название задачи' font_size: 20 Label: text_size: self.width - 200, None id: my_label text: '' TextInput: id: my_text size_hint: 0.8, 0.1 pos_hint: {'x': 0.1, 'y': 0.2} multiline: False on_text: root.otvet(self.text) <FourScreen>: BoxLayout: Button: id: _n text: 'Верно!' on_release: root.manager.current = 'Second' ''') class MainScreen(Screen): pass class SecondScreen(Screen): zadachy = {1 : 'Чему равна одна треть от одной четвёртой от одной пятой от половины от 120?', 2 : 'Петя пошел из лагеря в город. В 12 часов, в N км от лагеря, его догнал велосипедист и подвез его немного. Затем велосипедист высадил Петю в N км от города, и в 14 часов Петя добрался до города. Сколько времени потратит Петя на обратную дорогу пешком, если известно, что скорость велосипедиста в два раза больше скорости Пети?', 3 : 'В школе 5 кружков: политкружок, военный, фотографический, шахматный и хоровой. Политкружок занимается через день, военный - через 2 дня на 3-й; фотографический - каждый 4-й день, шахматный - каждый 5-й день и хоровой - каждый 6-й день. Первого января в школе собрались все 5 кружков, а затем занятия велись в назначенные по плану дни. Сколько в первом квартале было ещё вечеров, когда собирались все 5 кружков, при условии, что год не является високосным?', 4 : 'Заработок Кости за последний месяц вместе со сверхурочными составляет 250 рублей. основная плата на 200 рублей больше, чем сверхурочные. Чему равна основная плата?'} class ThirdScreen(Screen): def __init__(self, **kwargs): super().__init__(**kwargs) self.my_screen = Builder.load_string('<ThirdScreen>') return self.my_screen def otvet(self, text): n = [ '- Устный счёт -', '- Скорость Пети -', '- Пять кружков -', '- Зарплата -'] otvety = {1 : '1', 2 : '4 часа', 3 : '1 Вечер', 4 : '225 рублей'} if text == otvety[n.index(self.my_screen.ids.my_name) + 1]: self.manager.current = 'Four' class FourScreen(Screen): pass class MainApp(App): def build(self): sm = ScreenManager() sm.add_widget(MainScreen(name = 'Main')) sm.add_widget(SecondScreen(name = 'Second')) sm.add_widget(ThirdScreen(name = 'Third')) sm.add_widget(FourScreen(name = 'Four')) return sm if __name__ == '__main__': MainApp().run()