給這段代碼將根據物料名稱下拉輸入框中填寫的内容,去匹配excel表名為數據中第一列相應數據的第5列的值寫道物料品名的下拉框中,沒有就不寫
时间: 2024-03-10 08:45:44 浏览: 134
你可以在下拉框控件的事件绑定函数中添加读取Excel文件的代码,根据用户输入的内容来匹配Excel表中相应的数据,并将其写入物料品名的下拉框中。以下是修改过的代码:
```python
class InventoryApp:
def __init__(self, master):
self.master = master
master.title("物料进出库统计")
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)
# 打开Excel文件
self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
self.record_sheet = self.wb["記錄"]
self.data_sheet = self.wb["數據"]
# 从工作表中获取数据并写入下拉框中
data_list = []
for row in range(2, self.data_sheet.max_row + 1):
cell_value = self.data_sheet.cell(row=row, column=1).value
if cell_value:
data_list.append(cell_value)
self.material_name11 = ttk.Combobox(self.container_top, values=data_list)
# 创建标签
self.label1 = ttk.Label(self.container_top, text="PEGA-料号:")
self.label1.grid(row=0, column=0, padx=5, pady=5)
# 添加下拉框控件到界面上
self.material_name11.grid(row=0, column=1, padx=5, pady=5)
# 为下拉框控件添加绑定事件
def on_material_name_keyrelease(event):
# 获取用户输入的内容
user_input = self.material_name11.get()
# 根据用户输入的内容过滤下拉框的选项
filtered_options = [option for option in data_list if user_input in option]
# 更新下拉框的选项
self.material_name11.configure(values=filtered_options)
# 在物料品名的下拉框中根据物料名称匹配Excel表中相应的数据
for row in range(2, self.data_sheet.max_row + 1):
cell_value = self.data_sheet.cell(row=row, column=1).value
if user_input == cell_value:
material_names = self.data_sheet.cell(row=row, column=5).value
if material_names:
material_names = material_names.split(',')
self.material_qty6.configure(values=material_names)
break
self.material_name11.bind('<KeyRelease>', on_material_name_keyrelease)
self.label6 = ttk.Label(self.container_top, text="品名:")
self.label6.grid(row=5, column=0, padx=5, pady=5)
self.material_qty6 = ttk.Combobox(self.container_top, values=[])
self.material_qty6.grid(row=5, column=1, padx=5, pady=5)
```
在事件绑定函数中,我们使用了一个循环来遍历Excel表中的数据,找到与用户输入匹配的数据行,并将该行的第5列值写入物料品名的下拉框中。注意,我们使用了`split()`函数将第5列值中的多个品名分割开来,以便在下拉框中展示。
阅读全文