# 创建标签和下拉框 self.label1 = ttk.Label(self.container, text="PEGA-料号:") self.label1.grid(row=0, column=0, padx=5, pady=5) self.material_name = tk.ttk.Combobox(self.container, values=[]) self.material_name.grid(row=0, column=1, padx=5, pady=5)這段代碼中下拉輸入框需要修改為帶有記憶功能的,儅用戶輸入一次后,下一次輸入一半就可以跳出完整的
时间: 2024-03-09 17:47:06 浏览: 53
建议您可以在代码中添加一个字典,用于存储用户输入的值和对应的完整值,当用户输入一半时,程序可以根据字典中的记录自动匹配出完整的值。
以下是修改后的代码示例:
```
# 创建标签和下拉框
self.label1 = ttk.Label(self.container, text="PEGA-料号:")
self.label1.grid(row=0, column=0, padx=5, pady=5)
self.material_dict = {} # 添加一个字典存储用户输入的值和对应的完整值
def on_select(event): # 定义一个回调函数,用于自动匹配完整值
value = event.widget.get()
for key in self.material_dict:
if value.lower() in key.lower():
event.widget.set(self.material_dict[key])
break
self.material_name = tk.ttk.Combobox(self.container, values=[], postcommand=lambda:self.material_name.configure(values=list(self.material_dict.values())))
self.material_name.grid(row=0, column=1, padx=5, pady=5)
self.material_name.bind('<<ComboboxSelected>>', on_select)
# 在相应的事件中更新字典
def update_dict(event):
value = event.widget.get()
self.material_dict[value] = "完整值" # 将完整值替换为实际的完整值
event.widget.set(value)
self.material_name.bind('<Return>', update_dict)
self.material_name.bind('<FocusOut>', update_dict)
```
在上述代码中,我们添加了一个名为`self.material_dict`的字典,用于存储用户输入的值和对应的完整值。当用户输入一半时,程序会根据字典中的记录自动匹配出完整的值,并将其填充到下拉框中。在用户输入完整值后,程序会将其存储到字典中,以便下次匹配时使用。
阅读全文