我有很多QComboBoxes
,在某个时刻,我需要获取特定QComboBox
的每个项目以进行迭代。
虽然我可以只列出与QComboBox
中的项目相对应的项目列表,但我宁愿直接从小部件本身获取它们(有大量的QComboBoxes
每个都有很多项目)
是否有任何功能/方法可以帮助我? (例如:
QComboBoxName.allItems()
)
我查看了类引用,但找不到任何相关内容。
我想到了一些混乱的方法,但我不喜欢它们
(例如通过更改索引并获取项目来迭代QComboBox
)。
Python 2.7.1
IDLE 1.8
Windows 7
PyQt4
答案 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中进行了测试。