27

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

是否有任何功能/方法可以为我做到这一点?
(例如:

 QComboBoxName.allItems()

)
我查看了类参考,但找不到任何相关内容。

我想了一些乱七八糟的方法,但我不喜欢它们。(比如通过更改索引和获取项目等来
迭代)。QComboBox


Python 2.7.1
空闲 1.8
Windows 7
PyQt4

4

2 回答 2

57

据我所知,您可以使用以下方式引用一个项目.itemText()

AllItems = [QComboBoxName.itemText(i) for i in range(QComboBoxName.count())]
于 2011-09-20T04:14:29.593 回答
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 中测试。

于 2020-09-24T13:50:03.293 回答