還需要用戶輸入時可以自動打開下拉按鈕跳出相應内容選項
时间: 2024-03-16 19:43:49 浏览: 13
如果用户在输入时自动打开下拉菜单并跳出相应的内容选项,可以使用Combobox组件的post方法和bind方法来实现。具体做法是,在绑定Combobox组件的"<FocusIn>"事件时,调用post方法打开下拉菜单;然后在绑定Combobox组件的"<<ComboboxSelected>>"事件时,将下拉菜单中的选项插入到Combobox组件中,并使用bind方法绑定"<FocusIn>"事件,以便下次用户输入时自动打开下拉菜单。以下是修改后的代码:
```
self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
self.record_sheet = self.wb["記錄"]
self.data_sheet = self.wb["數據"]
# 获取"數據"工作表的第一列数据
data_col = self.data_sheet['A']
data_list = [cell.value for cell in data_col]
# 在GUI界面中创建标签和下拉输入框
self.label10 = ttk.Label(self.container_top, text="PEGA-料号:")
self.label10.grid(row=0, column=0, padx=5, pady=5)
self.material_name11 = ttk.Combobox(self.container_top, values=data_list)
self.material_name11.grid(row=0, column=1, padx=5, pady=5)
# 绑定事件,打开下拉菜单并插入内容
def show_options(event):
self.material_name11.post()
self.material_name11['values'] = data_list
self.material_name11.bind("<FocusIn>", show_options)
def select_option(event):
current_value = self.material_name11.get()
if current_value in data_list:
self.material_name11.current(data_list.index(current_value))
self.material_name11.unbind("<FocusIn>")
self.material_name11.bind("<FocusIn>", show_options)
self.material_name11.bind("<<ComboboxSelected>>", select_option)
```
这段代码首先打开名为"1.xlsx"的Excel文件,并获取其中的"記錄"和"數據"工作表。然后使用openpyxl库的方法获取"數據"工作表的第一列数据,并将其赋值给data_list变量。接着在GUI界面中创建名为"PEGA-料号:"的标签和一个下拉输入框,将data_list作为下拉输入框的选项值。然后定义两个事件处理函数show_options和select_option,用于在用户输入时打开下拉菜单并插入选项,以及在用户选择选项后将其插入到下拉输入框中。最后使用bind方法将这两个事件与Combobox组件相关联。