在 kivymd 上重新运行应用程序后如何保存和加载数据

Posted

技术标签:

【中文标题】在 kivymd 上重新运行应用程序后如何保存和加载数据【英文标题】:How to save and load the data after rerunning the app on kivymd 【发布时间】:2021-05-03 22:52:48 【问题描述】:

我怎样才能从我在退出应用程序之前输入的列表中保存项目,然后在我打开应用程序时再次加载它,因为我要将它转换为应用程序然后我意识到因为我正在制作购物清单应用程序,即使我关闭应用程序,该项目也必须保存在列表中。

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

【问题讨论】:

【参考方案1】:

大多数人会使用数据库来存储应用程序数据。

【讨论】:

以上是关于在 kivymd 上重新运行应用程序后如何保存和加载数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 KivyMD 中保存用户的输入(图像文件)

为啥 KivyMD apk 应用程序在打开后立即关闭?

如何修复 Kivymd MDDataTable python3 的“内联错误”

在安卓手机上运行应用程序时没有名为“kivymd”的模块

如何保存对 Python 列表所做的更改,以便在重新运行脚本后更新? [复制]

保存后重新加载