Skróciłem do konkretów, skasowałem funkcje do saveowania inputu ze spinnerów.
Kopiuj
import os
os.environ['KIVY_GL_BACKEND'] = 'angle_sdl2'
from kivy.app import App
import pickle
import os.path
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.config import Config
from kivy.factory import Factory
from kivy.properties import ListProperty, ObjectProperty, BooleanProperty, StringProperty
from kivy.uix.dropdown import DropDown
from kivy.uix.spinner import Spinner
from kivy.clock import Clock
from kivy.base import runTouchApp
from kivy.uix.textinput import TextInput
from functools import partial
Config.set('graphics', 'width', '400')
Config.set('graphics', 'height', '800')
Config.write()
Builder.load_string('''
<MainScreen>:
MainLayout:
canvas.before:
BorderImage:
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
size_hint: .99, .99
pos_hint: {'center_x': .5, 'center_y': .5}
Button: # Details
background_color:0, 0, 0, 0
pos_hint: {'x': .03, 'y': .46}
size_hint: .40, .20
on_press:
root.manager.current = 'Details'
root.manager.transition.direction = "right"
Button: # Menu
background_color:0, 0, 0, 0
pos_hint: {'x': .55, 'y': .24}
size_hint: .40, .20
on_press:
root.manager.current = 'Menu'
root.manager.transition.direction = "left"
Button: # Max_weights
background_color:0, 0, 0, 0
pos_hint: {'x': .55, 'y': .46}
size_hint: .40, .20
on_press:
root.manager.current = 'Max_weight'
root.manager.transition.direction = "left"
Button: # About
background_color:0, 0, 0, 0
pos_hint: {'x': .55, 'y': .01}
size_hint: .40, .20
on_press:
root.manager.current = 'About'
root.manager.transition.direction = "left"
Button: # Sessions
background_color:0, 0, 0, 0
pos_hint: {'x': .03, 'y': .24}
size_hint: .40, .20
on_press:
root.manager.current = 'Sessions'
root.manager.transition.direction = "right"
Button: # Timetable
background_color:0, 0, 0, 0
pos_hint: {'x': .03, 'y': .01}
size_hint: .40, .20
on_press:
root.manager.current = 'Timetable'
root.manager.transition.direction = "right"
<AboutScreen>
AboutLayout:
canvas.before:
BorderImage:
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
size_hint: .99, .99
pos_hint: {'center_x': .5, 'center_y': .5}
Button:
pos_hint: {'x': .01, 'y': .90}
size_hint: .50, .10
background_color:0, 0, 0, 0
on_press:
root.manager.current = "Main"
root.manager.transition.direction = 'right'
Button:
text: 'Some very long line which will be cut'
text_size: self.size
pos_hint: {'x': .21, 'y': .20}
size_hint: .50, .30
<DetailsScreen>:
DetailsLayout:
canvas.before:
BorderImage:
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
size_hint: .99, .99
pos_hint: {'center_x': .5, 'center_y': .5}
Button:
pos_hint: {'x': .01, 'y': .90}
size_hint: .50, .10
background_color:0, 0, 0, 0
on_press:
root.manager.current = "Main"
root.manager.transition.direction = 'left'
Spinner:
id: spinner_sex
pos_hint: {'x': .35, 'y': .65}
size_hint: .30, .05
background_color:0, 0, 0, 0
text: '< Select >'
values: ('Male', 'Female')
on_text: root.save_input_spinner(spinner_sex.id, spinner_sex.text)
Spinner:
id: spinner_goal
pos_hint: {'x': .35, 'y': .04}
size_hint: .30, .05
background_color:0, 0, 0, 0
text: '< Select >'
values: ('Strenght', 'Mass', 'Sculpture')
on_text: root.save_input_spinner(spinner_goal.id, spinner_goal.text)
Spinner:
id: spinner_activity
pos_hint: {'x': .35, 'y': .23}
size_hint: .30, .05
background_color:0, 0, 0, 0
text: '< Select >'
values: ('Bardzo', 'Aktywny', 'średni', 'nisko')
on_text: root.save_input_spinner(spinner_activity.id, spinner_activity.text)
SpinnerKg:
id: spinner_kg
pos_hint: {'x': .45, 'y': .45}
size_hint: .1, .05
text: '<Select>'
background_color:0, 0, 0, 0
on_text: root.save_input_spinner(spinner_kg.id, spinner_kg.text)
Label:
id: but
background_color:1, 0, 0, 0
text: 'Kg'
text_size: self.size
pos_hint: {'x': .6, 'y': .46}
size_hint: .1, .05
DetailsLabel:
id: detailslabel
background_color:1, 0, 1, 1
pos_hint: {'x': .4, 'y': .93}
size_hint: .5, .3
text_size: self.size
<Max_weightScreen>:
Max_weightLayout:
canvas.before:
BorderImage:
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
size_hint: .99, .99
pos_hint: {'center_x': .5, 'center_y': .5}
Button:
pos_hint: {'x': .01, 'y': .90}
size_hint: .50, .10
background_color:0, 0, 0, 0
on_press:
root.manager.current = "Main"
root.manager.transition.direction = 'right'
<SessionsScreen>:
SessionsLayout:
canvas.before:
BorderImage:
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
size_hint: .99, .99
pos_hint: {'center_x': .5, 'center_y': .5}
Button:
pos_hint: {'x': .01, 'y': .90}
size_hint: .50, .10
background_color:0, 0, 0, 0
on_press:
root.manager.current = "Main"
root.manager.transition.direction = 'left'
<TimetableScreen>:
TimetableLayout:
canvas.before:
BorderImage:
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
size_hint: .99, .99
pos_hint: {'center_x': .5, 'center_y': .5}
Button:
pos_hint: {'x': .01, 'y': .90}
size_hint: .50, .10
background_color:0, 0, 0, 0
on_press:
root.manager.current = "Main"
root.manager.transition.direction = 'left'
<MenuScreen>:
MenuLayout:
canvas.before:
BorderImage:
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
size_hint: .99, .99
pos_hint: {'center_x': .5, 'center_y': .5}
Button:
pos_hint: {'x': .01, 'y': .90}
size_hint: .50, .10
background_color:0, 0, 0, 0
on_press:
root.manager.current = "Main"
root.manager.transition.direction = 'right'
''')
class MainLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='main1.jpg'))
class AboutLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='aboutb.png'))
class AboutbLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='about.png'))
class DetailsLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='Details.png'))
class Max_weightLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='max_weight.png'))
class SessionsLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='sessions.png'))
class TimetableLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='timetable.png'))
class MenuLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='menu.png'))
class MainScreen(Screen):
pass
class AboutScreen(Screen):
pass
class SpinnerKg(Spinner):
values=(str(n) for n in range(40, 120))
class DetailsLabel(Label):
def __init__(self, text, **kwargs):
super().__init__(**kwargs)
self.text = text
def update_text(self):
if not os.path.isfile("details.pickle"):
return self.text == 'Wprowadz dane'
else:
return self.text == 'Mamy dane'
class DetailsScreen(Screen):
pass
class Max_weightScreen(Screen):
pass
class SessionsScreen(Screen):
pass
class MenuScreen(Screen):
pass
class TimetableScreen(Screen):
pass
sm = ScreenManager()
sm.add_widget(MainScreen(name='Main'))
sm.add_widget(AboutScreen(name='About'))
sm.add_widget(DetailsScreen(name='Details'))
sm.add_widget(Max_weightScreen(name='Max_weight'))
sm.add_widget(SessionsScreen(name='Sessions'))
sm.add_widget(MenuScreen(name='Menu'))
sm.add_widget(TimetableScreen(name='Timetable'))
class App(App):
def build(self):
crudeclock = DetailsLabel('string')
Clock.schedule_interval(crudeclock.update_text, 1)
return sm
if __name__ == '__main__':
App().run()