Zeej
Zeej

Reputation: 17

How to save and load the data after rerunning the app on kivymd

how can I possibly save the item from the list I inputted before exiting the app then load it again when I open the app, coz I'm going to convert it into app then I realize since i'm making a grocery list app, the item must be save on the list even I close the app.

from kivy.lang import Builder
from kivy.core.window import Window
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivymd.uix.list import OneLineAvatarIconListItem, IRightBodyTouch
from kivymd.uix.dialog import MDDialog
from kivymd.uix.button import MDFlatButton
from kivymd.uix.selectioncontrol import MDCheckbox
from kivymd.uix.boxlayout import MDBoxLayout
from kivy.properties import StringProperty

Window.size = (300, 500)

list_items = []


class DemoApp(MDApp):

    def build(self):
        return Builder.load_file('main.kv')

    def add_item(self):
        text_to_add = self.root.ids.ms.ids.inp.text
        if self.root.ids.ms.ids.inp.text == "":
            close_button = MDFlatButton(text="Okay", on_release=self.close_dialog)
            self.dialog = MDDialog(title="Invalid", text="No item added",
                                   size_hint=(0.7, 1), buttons=[close_button])
            self.dialog.open()
        else:
            list_items.append(text_to_add)
            self.root.ids.ms.ids.inp.text = ''
            lst = OneLineAvatarIconListItem(text=text_to_add)
            self.root.ids.ms.ids.list.add_widget(lst)

    def close_dialog(self, obj):
        self.dialog.dismiss()

    def qna(self):
        yes_button = MDFlatButton(text="Yes", on_release=self.remove_all_item)
        no_button = MDFlatButton(text="No", on_release=self.close_dialog)
        self.dialog = MDDialog(title="Remove all item?",
                               size_hint=(0.7, 1), buttons=[yes_button, no_button])
        self.dialog.open()

    def remove_all_item(self, obj):
        self.root.ids.ms.ids.list.clear_widgets()
        list_items.clear()
        self.dialog.dismiss()

    def remove_one_item(self, item):
        for i in self.root.ids.ms.ids.list.children:
            if i.text == item:
                self.root.ids.ms.ids.list.remove_widget(i)
                list_items.remove(i.text)

    def on_start(self):
        pass

enter image description here

Upvotes: 0

Views: 286

Answers (1)

im_baby
im_baby

Reputation: 988

Most would use a database for storing application data.

Upvotes: 1

Related Questions