QComboBox调用addItem时将元组存为变量触发TypeError如何解决
问题解决与实现方案
报错原因
QComboBox.addItem()的第二个参数为选项绑定的自定义用户数据,你原代码中给colors元组额外套了一层[],传入的实际结构是[("Black", "Blue", ...)],Qt解析用户数据时类型不匹配才抛出错误。直接写元组时你没有嵌套列表,所以可以正常运行。
正确写法(支持元组存为变量调用)
这个需求完全可以实现,只需要去掉colors外层多余的列表即可:
first_dropdown = 'Colored Pencil' # 元组存为变量完全可以正常调用 colors = ("Black", "Blue", "Brown", "Green", "Grey", "Yellow", "White") self.example = QComboBox() # 直接传入colors作为用户数据,不需要套列表 self.example.addItem(first_dropdown, colors)
下拉框联动实现
绑定第一个下拉框的选中信号,选中时取出关联的选项列表更新后续下拉框即可:
# 绑定选中触发信号 self.example.currentIndexChanged.connect(self.update_related_dropdown) # 槽函数实现后续下拉框更新 def update_related_dropdown(self, current_index): # 取出当前选项绑定的选项元组 related_options = self.example.itemData(current_index) # 更新后续下拉框内容 self.second_dropdown.clear() self.second_dropdown.addItems(related_options)
内容的提问来源于stack exchange,提问作者TheCrazySwede
相关产品推荐
相关产品推荐

