Tkinter Combobox列表无法更新,寻求技术指导
Tkinter Combobox 列表刷新解决方案
你的代码存在顺序错误:在调用Supplier_Lup.config(values=...)时,Supplier_Lup还未被实例化,这行代码完全无效。正确的刷新逻辑是先创建Combobox实例,之后通过config()方法动态更新选项列表。
修正后的初始化代码
# 先实例化Combobox Supplier_Lup = Combobox(Supplier_fr, values=SupplierRef_List, width=40, state='readonly') Supplier_Lup.grid(row=1, column=1, padx=10, pady=10, ipadx=10, sticky='w') Supplier_Lup.current() # 默认选中选项 Supplier_Lup.bind('<<ComboboxSelected>>', SupplierRef_input)
动态刷新列表的方法
当SupplierRef_List的数据发生变化时,直接调用config()方法更新values参数即可:
# 假设SupplierRef_List已更新为新数据 Supplier_Lup.config(values=SupplierRef_List) # 可选:更新后重新设置默认选中项(比如选中第一个) Supplier_Lup.current(0)
完整示例(带刷新触发)
你可以封装一个刷新函数,在需要的时候调用(比如按钮点击、数据加载完成后):
def refresh_supplier_list(): # 模拟获取新的供应商数据 new_supplier_list = ["新供应商A", "新供应商B", "新供应商C"] # 更新Combobox选项 Supplier_Lup.config(values=new_supplier_list) Supplier_Lup.current(0) # 初始化Combobox(同修正后的代码) Supplier_Lup = Combobox(Supplier_fr, values=SupplierRef_List, width=40, state='readonly') Supplier_Lup.grid(row=1, column=1, padx=10, pady=10, ipadx=10, sticky='w') Supplier_Lup.current() Supplier_Lup.bind('<<ComboboxSelected>>', SupplierRef_input) # 添加一个刷新按钮触发更新 refresh_btn = Button(Supplier_fr, text="刷新供应商列表", command=refresh_supplier_list) refresh_btn.grid(row=2, column=1, padx=10, pady=5)
核心逻辑:Combobox的选项列表是通过values参数控制的,只要在实例创建后调用config(values=新列表),就能实时刷新下拉选项。
内容的提问来源于stack exchange,提问作者Readw
相关产品推荐
相关产品推荐

