You need to enable JavaScript to run this app. 如何在PyQt5的Combobox中同时显示两个关联值并分别取值使用
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyQt5的Combobox中同时显示两个关联值并分别取值使用

实现方案

1. 替换原有下拉框填充逻辑

删除原来两个独立下拉框的填充代码,新增合并下拉框的填充逻辑,将关联的SITECODE和FOLDER组合为显示文本,同时将两个值以元组形式存入下拉框的自定义数据区域,方便选中后直接取用:

job_list = pd.read_csv(filepath_or_buffer="data/job_list.csv", header=0)
# 可选:对重复的SITECODE+FOLDER组合去重
job_list = job_list.drop_duplicates(subset=["SITECODE", "FOLDER"])

# 新增空选项
self.comboSiteJob.addItem("", ("", ""))
# 遍历CSV每行生成组合选项
for row in job_list.itertuples():
    show_text = f"{row.SITECODE} | {row.FOLDER}"
    # 自定义数据存两个值的元组,顺序为sitecode、folder
    self.comboSiteJob.addItem(show_text, (row.SITECODE, row.FOLDER))
# 绑定选中触发事件
self.comboSiteJob.currentIndexChanged.connect(self.comboSiteJob_index_changed)

注:上述代码中comboSiteJob为你新增的合并下拉框对象名,可根据实际命名修改。

2. 替换选中事件处理函数

删除原来两个独立下拉框的事件处理函数,新增合并下拉框的选中处理逻辑,一次取值分别更新两个输入框和全局变量:

def comboSiteJob_index_changed(self, index):
    global comboSiteCodes_gbl, comboJobs_gbl
    # 取出存储的元组并解包
    sitecode, folder = self.comboSiteJob.itemData(index)
    # 更新全局变量
    comboSiteCodes_gbl = sitecode
    comboJobs_gbl = folder
    # 同步更新两个输入框
    self.lineEditSiteCode.setText(sitecode)
    self.lineEditJob.setText(folder)

内容的提问来源于stack exchange,提问作者Spatial Digger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 18:21:03