class InventoryApp: def init(self, master): self.master = master master.title("物料进出库统计") self.master.state('zoomed') # 窗口最大化 # 创建左侧面板 self.container = tk.Frame(master) self.container.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) # 创建左上方面板 self.container_top = tk.Frame(self.container) self.container_top.pack(side=tk.TOP, fill=tk.BOTH, expand=True) # 创建左下方面板 self.container_bottom = tk.Frame(self.container) self.container_bottom.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)# 打开Excel文件 self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"]self.label6 = ttk.Label(self.container_bottom, text="品名:") self.label6.grid(row=5, column=0, padx=5, pady=5) self.material_qty6 = ttk.Combobox(self.container_bottom, values=[]) self.material_qty6.grid(row=5, column=1, padx=5, pady=5)self.label8 = ttk.Label(self.container_bottom, text="单价:") self.label8.grid(row=7, column=0, padx=5, pady=5) ling2= [''] self.material_qty8 = ttk.Combobox(self.container_bottom, values=ling2) self.material_qty8.grid(row=7, column=1, padx=5, pady=5) self.material_qty8.current(0)根據品名輸入框中的内容去獲取excel表名為數據的第4列相同内容的第6列對應的内容自動寫入單價輸入框中
时间: 2024-03-12 20:46:19 浏览: 82
您需要在品名输入框中绑定一个事件,当输入框中的内容发生变化时,触发事件。事件处理函数中,您可以使用openpyxl库读取Excel文件,找到表名为“数据”的第四列与品名输入框中的值相同的行,然后获取该行第六列的值,自动填入单价输入框中。以下是一个示例代码:
```
import openpyxl
class InventoryApp:
def __init__(self, master):
# 窗口初始化和界面布局
...
# 打开Excel文件
self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
self.record_sheet = self.wb["記錄"]
self.data_sheet = self.wb["數據"]
# 品名输入框和单价输入框
self.material_qty6 = ttk.Combobox(self.container_bottom, values=[])
self.material_qty6.grid(row=5, column=1, padx=5, pady=5)
self.material_qty6.bind("<<ComboboxSelected>>", self.get_price)
self.material_qty8 = ttk.Combobox(self.container_bottom, values=[''])
self.material_qty8.grid(row=7, column=1, padx=5, pady=5)
self.material_qty8.current(0)
def get_price(self, event):
# 获取品名输入框中的值
material_name = self.material_qty6.get()
# 在“数据”表中查找品名对应的行
for row in self.data_sheet.iter_rows(min_row=2, max_col=6, values_only=True):
if row[3] == material_name:
# 将单价写入单价输入框
self.material_qty8.set(row[5])
break
```
阅读全文