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

时间:2011-09-20 03:49:17

标签: python get pyqt4 qcombobox

我有很多QComboBoxes,在某个时刻,我需要获取特定QComboBox的每个项目以进行迭代。
虽然我可以只列出与QComboBox中的项目相对应的项目列表,但我宁愿直接从小部件本身获取它们(有大量的QComboBoxes每个都有很多项目)

是否有任何功能/方法可以帮助我? (例如:

 QComboBoxName.allItems()


我查看了类引用,但找不到任何相关内容。

我想到了一些混乱的方法,但我不喜欢它们 (例如通过更改索引并获取项目来迭代QComboBox)。


Python 2.7.1
IDLE 1.8
Windows 7
PyQt4

2 个答案:

答案 0 :(得分:38)

据我所知,你可以使用.itemText()引用一个项目:

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

答案 1 :(得分:0)

在接受的答案的基础上,您实际上可以使用以下方法为组合框提供可使用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中进行了测试。