pychram,写一个窗口对话的产品库存管理系统,数据本地保存
时间: 2023-12-26 09:06:41 浏览: 66
好的,我们可以使用 Python 的 Tkinter 模块来创建窗口,使用 SQLite 数据库来本地保存数据。下面是一个简单的产品库存管理系统的代码示例:
```python
import tkinter as tk
import sqlite3
# 连接到本地 SQLite 数据库
conn = sqlite3.connect('inventory.db')
c = conn.cursor()
# 创建产品表
c.execute('''CREATE TABLE IF NOT EXISTS products
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
price REAL NOT NULL,
quantity INTEGER NOT NULL)''')
# 创建主窗口
root = tk.Tk()
root.title('产品库存管理系统')
# 创建标签和输入框
name_label = tk.Label(root, text='产品名称')
name_label.grid(row=0, column=0)
name_entry = tk.Entry(root)
name_entry.grid(row=0, column=1)
price_label = tk.Label(root, text='产品价格')
price_label.grid(row=1, column=0)
price_entry = tk.Entry(root)
price_entry.grid(row=1, column=1)
quantity_label = tk.Label(root, text='产品数量')
quantity_label.grid(row=2, column=0)
quantity_entry = tk.Entry(root)
quantity_entry.grid(row=2, column=1)
# 创建按钮和列表框
add_button = tk.Button(root, text='添加产品', command=lambda: add_product())
add_button.grid(row=3, column=0)
delete_button = tk.Button(root, text='删除产品', command=lambda: delete_product())
delete_button.grid(row=3, column=1)
listbox = tk.Listbox(root, width=50)
listbox.grid(row=4, column=0, columnspan=2)
# 定义添加产品函数
def add_product():
# 获取输入框中的数据
name = name_entry.get()
price = float(price_entry.get())
quantity = int(quantity_entry.get())
# 在数据库中插入新数据
c.execute('INSERT INTO products (name, price, quantity) VALUES (?, ?, ?)', (name, price, quantity))
conn.commit()
# 清空输入框
name_entry.delete(0, tk.END)
price_entry.delete(0, tk.END)
quantity_entry.delete(0, tk.END)
# 更新列表框中的数据
update_listbox()
# 定义删除产品函数
def delete_product():
# 获取选中的产品 ID
selected_id = listbox.get(listbox.curselection())[0]
# 在数据库中删除对应的数据
c.execute('DELETE FROM products WHERE id = ?', (selected_id,))
conn.commit()
# 更新列表框中的数据
update_listbox()
# 定义更新列表框函数
def update_listbox():
# 清空列表框
listbox.delete(0, tk.END)
# 查询数据库中的所有产品
c.execute('SELECT * FROM products')
products = c.fetchall()
# 将产品添加到列表框中
for product in products:
listbox.insert(tk.END, f'{product[0]}. {product[1]} - ¥{product[2]} - 库存:{product[3]}')
# 初始化列表框
update_listbox()
# 启动主循环
root.mainloop()
# 关闭数据库连接
conn.close()
```
在这个例子中,我们首先连接到本地 SQLite 数据库,并创建了一个名为 `products` 的表,该表有四个字段:`id`、`name`、`price` 和 `quantity`,分别表示产品 ID、名称、价格和数量。然后我们使用 Tkinter 模块创建了一个简单的窗口,并在窗口中添加了标签、输入框、按钮和列表框。我们还定义了三个函数来实现添加产品、删除产品和更新列表框的功能。最后,我们使用 `mainloop()` 函数启动了主循环,使窗口保持打开状态,直到用户关闭窗口为止。
阅读全文