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)# 打开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_name.get() # 根据用户输入的内容过滤下拉框的选项 filtered_options = [option for option in data_list if user_input in option] # 更新下拉框的选项 self.material_name.configure(values=filtered_options) # 展开下拉框 self.material_name.event_generate('<Down>') 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列的值進道物料品名的下拉輸入框中,沒有就不寫
时间: 2024-03-10 13:46:00 浏览: 60
好的,你的问题是如何将根据物料名称下拉输入框中填写的内容,去匹配Excel表名为“數據”中第一列相应数据的将第5列的值写入物料品名的下拉输入框中,如果没有就不写入?
可以使用下面的代码实现:
```python
def on_material_name_keyrelease(event):
# 获取用户输入的内容
user_input = self.material_name11.get()
# 在“數據”表中查找对应物料名称的行
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 == user_input:
# 将第5列的值写入物料品名的下拉输入框中
self.material_qty6.set(self.data_sheet.cell(row=row, column=5).value)
break
else:
# 如果没有匹配到对应物料名称的行,则清空物料品名的下拉输入框
self.material_qty6.set("")
self.material_name11.bind('<KeyRelease>', on_material_name_keyrelease)
```
在代码中,首先定义了一个`on_material_name_keyrelease`函数,该函数会在物料名称下拉输入框中输入内容并释放键盘按键时触发。函数中,首先获取用户输入的内容,然后在“數據”表中查找对应物料名称的行,如果找到则将第5列的值写入物料品名的下拉输入框中,如果没有找到则清空物料品名的下拉输入框。最后将该函数绑定到物料名称下拉输入框上,以实现自动匹配和填写功能。
阅读全文