【问题标题】:Getting all items of QComboBox - PyQt4 (Python)获取 QComboBox 的所有项目 - PyQt4 (Python)
【发布时间】:2011-11-20 17:59:34
【问题描述】:

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

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

 QComboBoxName.allItems()

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

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


Python 2.7.1
空闲 1.8
视窗 7
PyQt4

【问题讨论】:

  • 这是一篇旧文章,但为了完整起见,可能值得考虑使用模型来填充组合并使用它。

标签: python get pyqt4 qcombobox


【解决方案1】:

在接受的答案的基础上,您实际上可以使用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 中测试。

【讨论】:

    【解决方案2】:

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

    AllItems = [QComboBoxName.itemText(i) for i in range(QComboBoxName.count())]
    

    【讨论】:

    • 啊,不知道您想要项目的文本,而不是项目参考。不管怎样,祝你好运。
    猜你喜欢
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多