📜  Python|维护杂货清单(1)

📅  最后修改于: 2023-12-03 15:34:21.110000             🧑  作者: Mango

Python维护杂货清单

介绍

这是一个用Python语言编写的应用程序,主要用于帮助用户维护自己的杂货清单。该应用程序提供了以下功能:

  • 用户可以添加、删除、修改、查询自己的杂货清单。
  • 用户可以将自己的杂货清单导出为CSV文件,并随时备份。
  • 用户可以按照商品名、价格、数量、购买日期等字段进行排序。

该程序使用了SQLite作为后台数据库,使用tkinter作为前端图形界面库,可以在Windows、Linux、MacOS等多个平台上运行。

安装

该应用程序需要安装Python3和sqlite3模块,可以通过以下命令在Linux/MacOS上进行安装:

sudo apt-get install python3 sqlite3 python3-tk

在Windows上,则需要下载Python3的安装包,安装时需要选择安装sqlite3模块和tkinter库。

运行

下载源代码后,可以直接在命令行中运行python groceries.py,或者双击groceries.py文件启动图形界面程序。

运行后,用户可以在图形界面中进行杂货清单的管理操作,如添加、删除、修改、查询等。用户也可以将清单导出为CSV文件,或者从CSV文件中导入已有的清单。

代码示例
import tkinter as tk
import sqlite3

# 定义数据库操作函数
def db_execute(sql:str, values:tuple=()) -> list:
    conn = sqlite3.connect('groceries.db')
    with conn:
        cursor = conn.cursor()
        cursor.execute(sql, values)
        result = cursor.fetchall()
    return result

# 定义GUI窗口
class GroceriesWindow:
    def __init__(self, master):
        self.master = master
        self.master.title('Groceries')
        self.master.geometry('600x400')

        # 创建菜单栏
        menubar = tk.Menu(self.master)
        self.master.config(menu=menubar)

        # 创建清单菜单
        groceries_menu = tk.Menu(menubar, tearoff=False)
        menubar.add_cascade(label='Groceries', menu=groceries_menu)

        # 添加清单菜单项
        groceries_menu.add_command(label='Add', command=self.add_grocery)
        groceries_menu.add_command(label='Delete', command=self.delete_grocery)
        groceries_menu.add_command(label='Edit', command=self.edit_grocery)
        groceries_menu.add_separator()
        groceries_menu.add_command(label='Export', command=self.export_groceries)
        groceries_menu.add_command(label='Import', command=self.import_groceries)
        groceries_menu.add_separator()
        groceries_menu.add_command(label='Exit', command=self.master.quit)

        # 创建清单列表框
        self.listbox = tk.Listbox(self.master, height=20, width=70)
        self.listbox.pack(side=tk.LEFT, padx=10, pady=10)

        # 创建滚动条
        scrollbar = tk.Scrollbar(self.master)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

        # 绑定清单列表框与滚动条
        self.listbox.config(yscrollcommand=scrollbar.set)
        scrollbar.config(command=self.listbox.yview)

        # 初始化清单列表框
        self.refresh_groceries()

    # 刷新清单列表框
    def refresh_groceries(self):
        self.listbox.delete(0, tk.END)
        sql = 'SELECT id, name, price, quantity, purchased_date FROM groceries ORDER BY name'
        result = db_execute(sql)
        for row in result:
            self.listbox.insert(tk.END, f'{row[0]} - {row[1]} - ${row[2]:.2f} - {row[3]} - {row[4]}')

    # 添加清单记录
    def add_grocery(self):
        pass
    
    # 删除清单记录
    def delete_grocery(self):
        pass
    
    # 修改清单记录
    def edit_grocery(self):
        pass
    
    # 导出清单为CSV文件
    def export_groceries(self):
        pass
    
    # 从CSV文件导入清单
    def import_groceries(self):
        pass

# 创建主窗口
if __name__ == '__main__':
    root = tk.Tk()
    app = GroceriesWindow(root)
    root.mainloop()

该代码定义了一个GroceriesWindow类,用于创建图形界面窗口,并包含了添加、删除、修改、导出、导入等功能的菜单项。其中,清单列表框用于显示用户的添加、修改、删除后的清单记录,支持滚动条滚动。代码中使用了sqlite3模块连接SQLite数据库,用于进行清单的持久化存储。