I have A LOT of QComboBoxes
, and at a certain point, I need to fetch every item of a particular QComboBox
to iterate through.
QComboBox
, I'd rather get them straight from the widget its开发者_如何学JAVAelf (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 theQComboBox
by changing the index and getting the item, etc).
Python 2.7.1
IDLE 1.8 Windows 7 PyQt4As far as I can tell, you can just reference an item using .itemText()
:
AllItems = [QComboBoxName.itemText(i) for i in range(QComboBoxName.count())]
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.
精彩评论