from kivy.app import App from kivy.uix.label import Label from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.uix.screenmanager import ScreenManager, Screen from kivy.uix.textinput import TextInput from instructions import txt_instruction, txt_test1, txt_sits, txt_test3 from ruffier import test name = '' age = 0 P1 = 0 P2 = 0 P3 = 0 class ResultScreen(Screen): def __init__(self, **kw): super().__init__(**kw) self.lbl1 = Label(text='ok') outer = BoxLayout(orientation='vertical', padding=8, spacing=8) outer.add_widget(self.lbl1) self.add_widget(outer) self.on_enter = self.before def before(self): global name, P1, P2, P3 print(name) self.lbl1.text = name + '\n' + test(P1, P2, P3, age) class PulseCheck2(Screen): def __init__(self, **kw): super().__init__(**kw) instr = Label(text=txt_test3) lbl1 = Label(text="Результат:", halign='right') self.P2 = TextInput(multiline=False) lbl2 = Label(text='Результат після відпочинку:', halign='right') self.P3 = TextInput(text='', multiline=False) self.btn = Button(text='Завершити', size_hint=(0.3, 0.2), pos_hint={'center_x': 0.5}) self.btn.on_press = self.next line1 = BoxLayout(size_hint=(0.8, None), height='30sp') line2 = BoxLayout(size_hint=(0.8, None), height='30sp') line1.add_widget(lbl1) line1.add_widget(self.P2) line2.add_widget(lbl2) line2.add_widget(self.P3) outer = BoxLayout(orientation='vertical', padding=8, spacing=8) outer.add_widget(instr) outer.add_widget(line1) outer.add_widget(line2) outer.add_widget(self.btn) self.add_widget(outer) def next(self): global P2, P3 P2 = int(self.P2.text) P3 = int(self.P3.text) self.manager.current = 'ResultScreen' class MakeFitness(Screen): def __init__(self, **kw): super().__init__(**kw) instr = Label(text = txt_sits) self.btn = Button(text='Продовжити', size_hint=(0.3, 0.2), pos_hint={'center_x': 0.5}) self.btn.on_press = self.next outer = BoxLayout(orientation='vertical', padding=8, spacing=8) outer.add_widget(instr) outer.add_widget(self.btn) self.add_widget(outer) def next(self): self.manager.current = 'PulseCheck2' class PulseCheck1(Screen): def __init__(self, **kw): super().__init__(**kw) instr = Label(text = txt_test1) lbl1 = Label(text = "Введіть результат:", halign='right') self.P1 = TextInput(multiline=False) self.btn = Button(text='Продовжити', size_hint=(0.3, 0.2), pos_hint={'center_x': 0.5}) self.btn.on_press = self.next line1 = BoxLayout(orientation = 'horizontal', size_hint=(0.8, None), height='30sp') line1.add_widget(lbl1) line1.add_widget(self.P1) outer = BoxLayout(orientation='vertical', padding=8, spacing=8) outer.add_widget(instr) outer.add_widget(line1) outer.add_widget(self.btn) self.add_widget(outer) def next(self): try: global P1 if not self.P1.text: raise Exception('Поле повино бути заповненим') P1 = check_number(self.P1.text) self.manager.current = 'MakeFitness' except Exception as error: print(error) self.error_lbl.text = str(error) def check_number(number): try: return int(number) except: raise Exception('Дані повинні бути числом') class UserInfoScreen(Screen): def __init__(self, **kw): super().__init__(**kw) self.error_lbl = Label(text='', color='red', size_hint=(0.8, None), height='30sp', pos_hint={'center_x': 0.5}) instr = Label(text=txt_instruction) lbl1 = Label(text="Введіть ім'я:", halign='right') self.in_name = TextInput(multiline=False) lbl2 = Label(text='Введіть вік:', halign='right') self.in_age = TextInput(text='', multiline=False) self.btn = Button(text='Почати', size_hint=(0.3, 0.2), pos_hint={'center_x': 0.5}) self.btn.on_press = self.next line1 = BoxLayout(size_hint=(0.8, None), height='30sp') line2 = BoxLayout(size_hint=(0.8, None), height='30sp') line1.add_widget(lbl1) line1.add_widget(self.in_name) line2.add_widget(lbl2) line2.add_widget(self.in_age) outer = BoxLayout(orientation='vertical', padding=8, spacing=8) outer.add_widget(self.error_lbl) outer.add_widget(instr) outer.add_widget(line1) outer.add_widget(line2) outer.add_widget(self.btn) self.add_widget(outer) def next(self): try: global name, age if not self.in_age.text or not self.in_name.text: raise Exception('Поля повинні бути заповненими') name = self.in_name.text age = check_number(self.in_age.text) if age < 7: raise Exception("Рік людини повинен бути більше 7") self.manager.current = 'PulseCheck1' except Exception as error: print(error) self.error_lbl.text = str(error) class MyApp(App): def build(self): sm = ScreenManager() sm.add_widget(UserInfoScreen(name='UserInfoScreen')) sm.add_widget(PulseCheck1(name='PulseCheck1')) sm.add_widget(MakeFitness(name='MakeFitness')) sm.add_widget(PulseCheck2(name='PulseCheck2')) sm.add_widget(ResultScreen(name='ResultScreen')) return sm app = MyApp() app.run()