I am making an app where there is a profile screen in which you can enter generic profile information (name, height, weight, ect..) using textinput boxes. I know there is a way to put a button next to each textinput box to save the information and another button to load the information. I am wondering if there is a way to automatically load this information when the user opens the app rather than manually loading the information by hitting a button. Some have suggested ussing a subclass of ConfigParser to parse standard ini files and use this to load app-specific settings, but I have no idea how to do this.
Kivy File:
<Phone>:
result: _result
h: _h
w: _w
AnchorLayout:
anchor_x: 'center'
anchor_y: 'top'
ScreenManager:
size_hint: 1, .9
id: _screen_manager
Screen:
name: 'home'
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: "/home/aaron/Desktop/main.png"
Label:
markup: True
text: '[size=100][color=ff3333]Welcome to [color=ff3333]Diabetes Manager[/color][/size]'
Screen:
name: 'menu'
GridLayout:
cols: 2
padding: 50
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: "/home/aaron/Desktop/main.png"
Button:
text: 'My Profile'
on_press: _screen_manager.current = 'profile'
Button:
text: 'History'
on_press: _screen_manager.current = 'history'
Button:
text: 'New Entry'
on_press: _screen_manager.current = 'new_entry'
Button:
text: 'Graph'
on_press: _screen_manager.current = 'graph'
Button:
text: 'Diet'
on_press: _screen_manager.current = 'diet'
Button:
text: 'Settings'
on_press: _screen_manager.current = 'settings'
Screen:
name: 'profile'
GridLayout:
cols: 1
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=40][color=0000ff]Name[/color][/size]'
TextInput:
id: _name
hint_text: 'Name'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=40][color=0000ff]Gender[/color][/size]'
TextInput:
id: _gender1
hint_text: 'Gender'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=34][color=0000ff]Type of Diabetes[/color][/size]'
TextInput:
id: _type
hint_text: 'Type of Diabetes'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=40][color=0000ff]Height (in)[/color][/size]'
TextInput:
id: _h
hint_text: 'Height in inches'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=40][color=0000ff]Weight (lb)[/color][/size]'
TextInput:
id: _w
hint_text: 'Weight in pounds'
BoxLayout:
Button:
text: 'Calculate BMI'
on_press: root.product(*args)
Label:
size_hint_x: 4.5
id:_result
bold: True
markup: True
text: '[size=40][color=0000ff]BMI[/color][/size]'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=30][color=0000ff]List of Medications[/color][/size]'
TextInput:
id: _meds
hint_text: 'List of Medications'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=38][color=0000ff]Insulin Times[/color][/size]'
TextInput:
id: _times
hint_text: 'Please Enter Times to Take Insulin'
Screen:
name: 'history'
GridLayout:
cols:1
Screen:
name: 'new_entry'
GridLayout:
cols:1
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=40][color=0000ff]Time[/color][/size]'
TextInput:
id: _time
hint_text: 'Current Time'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=28][color=0000ff]Blood Sugar (mg/dL)[/color][/size]'
TextInput:
id: _glucose_reading
hint_text: 'Current Blood Sugar'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=40][color=0000ff]Carbs[/color][/size]'
TextInput:
id: _food
hint_text: 'Total Carbs for meal'
BoxLayout:
Label:
size_hint_x: 0.22
bold: True
markup: True
text: '[size=30][color=0000ff]Medications Taken[/color][/size]'
TextInput:
id: _meds_taken
hint_text: 'Please Enter Any Medications Taken'
Screen:
name: 'graph'
GridLayout:
cols: 3
padding: 50
Label:
markup: True
text: '[size=24][color=dd88ff]Your Graph[/color][/size]'
Screen:
name: 'diet'
GridLayout:
cols: 3
padding: 50
Label:
markup: True
text: '[size=24][color=dd88ff]Reccomended Diet[/color][/size]'
Screen:
name: 'settings'
GridLayout:
cols: 3
padding: 50
Label:
markup: True
text: '[size=24][color=dd88ff]Settings[/color][/size]'
AnchorLayout:
anchor_x: 'center'
anchor_y: 'bottom'
BoxLayout:
orientation: 'horizontal'
size_hint: 1, .1
Button:
id: btnExit
text: 'Exit'
on_press: app.stop()
Button:
text: 'Menu'
on_press: _screen_manager.current = 'menu'
Kivy has storage functionality inbuilt. By using the inbuilt methods it will store the file in the correct place for Android or iOS without you having to worry about the correct location. Here's their docs:https://kivy.org/docs/api-kivy.storage.html#module-kivy.storage
And a short example to show how to put, retrieve and delete values:
from kivy.storage.jsonstore import JsonStore
store = JsonStore('baz.json')
store.put('foo', 'bar')
if store.exists('foo'):
print('foo is:', store.get('foo'))
store.delete('foo')
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.