📅  最后修改于: 2023-12-03 15:34:21.110000             🧑  作者: Mango
这是一个用Python语言编写的应用程序,主要用于帮助用户维护自己的杂货清单。该应用程序提供了以下功能:
该程序使用了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数据库,用于进行清单的持久化存储。