从工作表中获取数据并写入下拉框中 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) def on_material_name_keyrelease(event): # 获取用户输入的内容 user_input = self.material_name11.get() if not user_input: # 如果用户没有输入任何内容,则展示所有选项 self.material_name11.configure(values=data_list) else: # 根据用户输入的内容过滤下拉框的选项 filtered_options = [option for option in data_list if user_input in option] if filtered_options: # 如果有符合条件的选项,则更新下拉框的选项并展开下拉框 self.material_name11.configure(values=filtered_options) self.material_name11.event_generate('<Down>') # 根据用户输入的内容在数据表中筛选出对应的行 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: # 找到对应的行后,将第4列的值填入material_qty14中 self.material_qty14.set(self.data_sheet.cell(row=row, column=4).value) break else: # 如果没有符合条件的选项,则关闭下拉框 self.material_name11.event_generate('<Escape>') # 创建标签 self.label10 = ttk.Label(self.container_top, text="PEGA-料号:") self.label10.grid(row=0, column=0, padx=5, pady=5)這段代碼在下拉框輸入内容時會出現開頭有跟表中數據,彈出的下拉框影響用戶正常輸入,修改為用戶正常輸入,下拉框選項也正常彈出
时间: 2024-03-12 21:45:44 浏览: 92
您可以尝试将下拉框的初始化代码放在用户输入内容的判断之后,这样用户输入内容时不会立即展示下拉框的选项,而是等用户输入完成后再展示。具体可以将代码修改为:
```
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:
# 找到对应的行后,将第4列的值填入material_qty14中
self.material_qty14.set(self.data_sheet.cell(row=row, column=4).value)
break
else:
# 如果没有符合条件的选项,则关闭下拉框
self.material_name11.event_generate('<Escape>')
if not user_input:
# 如果用户没有输入任何内容,则展示所有选项
self.material_name11.configure(values=data_list)
else:
# 根据用户输入的内容过滤下拉框的选项
filtered_options = [option for option in data_list if user_input in option]
# 更新下拉框的选项
self.material_name11.configure(values=filtered_options)
# 展开下拉框
self.material_name11.event_generate('<Down>')
```
这样修改后,用户输入时不会影响下拉框的展示,用户完成输入后才会展示符合条件的选项。
阅读全文