获取QComboBox的所有项 - PyQt4(Python)
我有很多个 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())]