基于字典值实现Qt6联动下拉框求助(Python 3.12、Pandas)
Qt6 联动下拉框基础实现方案
核心逻辑
- 创建两个
QComboBox组件,分别作为主下拉框和联动下拉框 - 主下拉框初始化时加载字典的所有键(one、two、three)
- 为主下拉框绑定
currentTextChanged信号,触发联动下拉框的选项更新逻辑
基础实现代码
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QComboBox import sys # 你的数据源字典 color_dict = {'one':['Blue', 'Green'],'two':['Green','Red'],'three':['Orange']} class LinkedComboBox(QWidget): def __init__(self): super().__init__() self.init_ui() def init_ui(self): # 设置窗口布局 layout = QVBoxLayout() self.setLayout(layout) # 创建第一个下拉框(主选择框) self.main_combo = QComboBox() # 加载字典的键作为选项 self.main_combo.addItems(color_dict.keys()) layout.addWidget(self.main_combo) # 创建第二个下拉框(联动框) self.link_combo = QComboBox() layout.addWidget(self.link_combo) # 绑定信号:主下拉框选项变化时触发更新联动框 self.main_combo.currentTextChanged.connect(self.update_linked_combo) # 初始化联动框显示第一个选项的对应值 self.update_linked_combo(self.main_combo.currentText()) def update_linked_combo(self, selected_key): # 清空联动框现有选项 self.link_combo.clear() # 根据选中的键加载对应的值作为选项 self.link_combo.addItems(color_dict.get(selected_key, [])) if __name__ == '__main__': app = QApplication(sys.argv) window = LinkedComboBox() window.show() sys.exit(app.exec())
关键细节说明
currentTextChanged信号:Qt6中该信号会在下拉框选中的文本发生变化时触发,传递当前选中的文本作为参数update_linked_combo方法:负责清空联动框并加载对应字典值,color_dict.get(selected_key, [])确保即使选中不存在的键也不会报错- 初始化时主动调用一次
update_linked_combo,保证程序启动时联动框有初始选项
内容的提问来源于stack exchange,提问作者Diner Knight
相关产品推荐
相关产品推荐

