python寫一個GUI每日交接班盤點系統,需要盤點者先將盤點信息寫入界面后上傳,數據傳達到右面文本框的表格中,,然後確認者去確認這個盤點數據是否正確,然後點擊確定,這條信息就結案,用excel做存儲資料 需要编写一个GUI每日交接班盘点系统,系统需要具备以下功能: 1.盘点者输入盘点信息,包括69料號,工單,領板數量,待測數量,待裁數量,待送修數量,盤點人 2.盘点者上传盘点信息,将信息传递到右侧上方的表格中;同時需要計算出並顯示實際數據,用待測數量+待裁數量+待送修數量=實際數量,還要計算差異並顯示用實際數量-領板數量=差異 3.确认者查看盘点信息,确认是否正确; 4.确认者点击“确定”按钮前填寫自己的名字,系统将该信息标记为已完成,并将该信息寫入到Excel文件中,不能覆蓋原本數據。 5.然後將讀取excel資料顯示到右側下方的表格中,請給出代碼
时间: 2024-03-28 08:42:43 浏览: 39
以下是一个简单的Python GUI每日交接班盘点系统的代码示例,使用了Tkinter模块和openpyxl模块:
```python
import tkinter as tk
from tkinter import ttk
import openpyxl
class InventorySystem(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.grid()
self.create_widgets()
def create_widgets(self):
# 创建标签和文本框
tk.Label(self, text="69料號:").grid(row=0, column=0)
self.part_number = tk.StringVar()
tk.Entry(self, textvariable=self.part_number).grid(row=0, column=1)
tk.Label(self, text="工單:").grid(row=1, column=0)
self.work_order = tk.StringVar()
tk.Entry(self, textvariable=self.work_order).grid(row=1, column=1)
tk.Label(self, text="領板數量:").grid(row=2, column=0)
self.boards_received = tk.IntVar()
tk.Entry(self, textvariable=self.boards_received).grid(row=2, column=1)
tk.Label(self, text="待測數量:").grid(row=3, column=0)
self.to_test = tk.IntVar()
tk.Entry(self, textvariable=self.to_test).grid(row=3, column=1)
tk.Label(self, text="待裁數量:").grid(row=4, column=0)
self.to_cut = tk.IntVar()
tk.Entry(self, textvariable=self.to_cut).grid(row=4, column=1)
tk.Label(self, text="待送修數量:").grid(row=5, column=0)
self.to_repair = tk.IntVar()
tk.Entry(self, textvariable=self.to_repair).grid(row=5, column=1)
tk.Label(self, text="盤點人:").grid(row=6, column=0)
self.inventory_person = tk.StringVar()
tk.Entry(self, textvariable=self.inventory_person).grid(row=6, column=1)
# 创建“上传”按钮
tk.Button(self, text="上传", command=self.upload_inventory).grid(row=7, column=0, columnspan=2)
# 创建表格
self.columns = ("69料號", "工單", "領板數量", "待測數量", "待裁數量", "待送修數量", "實際數量", "差異", "盤點人", "確認者")
self.tree = ttk.Treeview(self, show="headings", columns=self.columns)
for col in self.columns:
self.tree.heading(col, text=col)
self.tree.grid(row=0, column=2, rowspan=7)
# 创建“确定”按钮和确认者名字文本框
self.confirm_person = tk.StringVar()
tk.Label(self, text="确认者:").grid(row=7, column=2)
tk.Entry(self, textvariable=self.confirm_person).grid(row=7, column=3)
tk.Button(self, text="确定", command=self.confirm_inventory).grid(row=8, column=2, columnspan=2)
# 创建右侧下方的表格
self.columns2 = ("69料號", "工單", "領板數量", "待測數量", "待裁數量", "待送修數量", "實際數量", "差異", "盤點人", "確認者")
self.tree2 = ttk.Treeview(self, show="headings", columns=self.columns2)
for col in self.columns2:
self.tree2.heading(col, text=col)
self.tree2.grid(row=9, column=0, columnspan=4)
def upload_inventory(self):
# 获取盘点信息并计算实际数量和差异
part_number = self.part_number.get()
work_order = self.work_order.get()
boards_received = self.boards_received.get()
to_test = self.to_test.get()
to_cut = self.to_cut.get()
to_repair = self.to_repair.get()
inventory_person = self.inventory_person.get()
actual_count = to_test + to_cut + to_repair
difference = actual_count - boards_received
# 将信息添加到表格中
self.tree.insert("", "end", values=(part_number, work_order, boards_received, to_test, to_cut, to_repair, actual_count, difference, inventory_person, ""))
# 清空文本框
self.part_number.set("")
self.work_order.set("")
self.boards_received.set("")
self.to_test.set("")
self.to_cut.set("")
self.to_repair.set("")
self.inventory_person.set("")
def confirm_inventory(self):
# 获取确认者名字和选中的行
confirm_person = self.confirm_person.get()
selected_item = self.tree.selection()
if not selected_item:
return
# 将确认者名字添加到表格中
values = self.tree.item(selected_item)["values"]
values[-1] = confirm_person
self.tree.item(selected_item, values=values)
# 将信息写入Excel文件中
wb = openpyxl.load_workbook("inventory.xlsx")
ws = wb.active
row = ws.max_row + 1
for i, value in enumerate(values):
ws.cell(row, i+1, value)
wb.save("inventory.xlsx")
# 将信息添加到右侧下方的表格中
self.tree2.insert("", "end", values=values)
# 创建主窗口和应用程序
root = tk.Tk()
root.title("每日交接班盘点系统")
app = InventorySystem(root)
app.mainloop()
```
这个程序需要一个名为“inventory.xlsx”的Excel文件,用于存储盘点信息。如果文件不存在,程序会自动创建一个新的文件。文件中的表格应该与程序中的表格具有相同的列。
阅读全文