修改這段代碼,在用戶輸入内容時自動展開下拉框跳出對應内容
时间: 2024-03-09 16:47:36 浏览: 83
可以尝试这样修改代码:
```
# 打开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_name = ttk.Combobox(self.container, values=data_list)
# 创建标签
self.label1 = ttk.Label(self.container, text="PEGA-料号:")
self.label1.grid(row=0, column=0, padx=5, pady=5)
# 添加下拉框控件到界面上
self.material_name.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_name.bind('<KeyRelease>', on_material_name_keyrelease)
```
这段代码的思路是先创建一个下拉框控件,将下拉框的值设为从工作表中获取的数据。然后为下拉框控件绑定一个`KeyRelease`事件,当用户输入内容并释放键盘的时候,触发该事件处理函数。在处理函数中,获取用户输入的内容,根据输入的内容过滤下拉框的选项,然后更新下拉框的选项,并展开下拉框。这样就可以实现用户输入内容时自动展开下拉框并跳出对应内容的效果。
阅读全文