获取QComboBox的所有项 - PyQt4(Python)

32 投票
2 回答
50610 浏览
提问于 2025-04-17 02:39

我有很多个 QComboBox,在某个时候,我需要获取某个特定 QComboBox 中的每一个项目,以便进行遍历。
虽然我可以直接准备一个和 QComboBox 中项目对应的列表,但我更希望直接从这个控件里获取这些项目(因为有很多个 QComboBox,每个里面的项目也很多)。

有没有什么函数或者方法可以帮我做到这一点呢?
(比如:

 QComboBoxName.allItems()


我查阅了类的参考资料,但没有找到相关的信息。

我想到了几种比较麻烦的方法,但我不喜欢这些方法。
(比如通过改变索引来遍历 QComboBox 并获取项目等等)。


Python 2.7.1
IDLE 1.8
Windows 7
PyQt4

2 个回答

0

在已有的答案基础上,其实你可以给你的下拉框(combobox)添加一个方法,通过使用 combo_box.allItems() 来实现,具体做法如下:

    setattr(combo_box, "allItems", lambda: [combo_box.itemText(i) for i in range(self.ui.combo_box.count())])
    print(combo_box.allItems()) # Works just fine!

我认为这个操作必须在创建 combo_box 的地方进行,否则 setattr 会失败。这个方法在 PyQt5 和 Python 3.7 中测试过。

72

根据我的理解,你可以直接用 .itemText() 来引用一个项目:

AllItems = [QComboBoxName.itemText(i) for i in range(QComboBoxName.count())]

撰写回答