获取 QComboBox 的所有项目 - PyQt4 (Python)

发布于 2024-12-05 17:07:06 字数 426 浏览 1 评论 0原文

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

有没有任何函数/方法可以为我做到这一点?
(例如

 QComboBoxName.allItems()

:)
我浏览了课程参考但找不到任何相关内容。

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


Python 2.7.1
空闲 1.8
Windows 7
PyQt4

I have A LOT of QComboBoxes, and at a certain point, I need to fetch every item of a particular QComboBox to iterate through.
Although I could just have a list of items that correspond to the items in the QComboBox, I'd rather get them straight from the widget itself (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 the QComboBox by changing the index and getting the item, etc).


Python 2.7.1
IDLE 1.8
Windows 7
PyQt4

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

℡寂寞咖啡 2024-12-12 17:07:07

基于已接受的答案,您实际上可以使用 combo_box.allItems() 为组合框提供一个可调用的 method ,方法是:

    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 中测试。

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.

非要怀念 2024-12-12 17:07:06

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

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

As far as I can tell, you can just reference an item using .itemText():

AllItems = [QComboBoxName.itemText(i) for i in range(QComboBoxName.count())]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文