Getting all items of QComboBox – PyQt4 (Python)

Question:

I have A LOT of QComboBoxes, and at a certain point, I need to fetch every item of a particular QComboBox to iterate through.
Although I could just have a list of items that correspond to the items in the QComboBox, I’d rather get them straight from the widget itself (there are a huge amount of QComboBoxes with many items each).

Is there any functions / methods that will do this for me?
(Eg:

 QComboBoxName.allItems()

)
I’ve looked through the class reference but couldn’t find anything relevant.

I’ve thought of a few messy methods, but I don’t like them.
(Like iterating through the QComboBox by changing the index and getting the item, etc).


Python 2.7.1
IDLE 1.8
Windows 7
PyQt4

Asked By: Anti Earth

||

Answers:

As far as I can tell, you can just reference an item using .itemText():

AllItems = [QComboBoxName.itemText(i) for i in range(QComboBoxName.count())]
Answered By: Blender

Building on the accepted answer, you can actually give you combobox a method callable using combo_box.allItems(), by doing this:

    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!

I believe it has to be done in the scope where combo_box was born, otherwise setattr fails.
Tested in PyQt5 and Python 3.7.

Answered By: Guimoute
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.