📌  相关文章
📜  PyQt5 - 检查下拉项目是否在 ComboBox 中隐藏(1)

📅  最后修改于: 2023-12-03 15:18:47.136000             🧑  作者: Mango

PyQt5 - 检查下拉项目是否在 ComboBox 中隐藏

如果你正在使用 PyQt5 编写一个 GUI 应用程序,并且需要检查 ComboBox 中的下拉项目是否隐藏,则可以使用以下方法。

获取下拉列表

首先,我们需要获取 ComboBox 的下拉列表。PyQt5 中的 QComboBox 类有一个方法 view(),该方法返回一个 QAbstractItemView 对象,它提供了 ComboBox 中下拉列表的访问权限。

combo_box_view = combo_box.view()
检查项是否隐藏

然后,我们可以使用 isVisible() 方法检查所需项是否在下拉列表中隐藏。

item = combo_box.findText('Item text')
is_hidden = not combo_box_view.model().item(combo_box_view.model().index(combo_box.findText(item), 0)).isVisible()

如果 is_hidden 的值为 True,则所需项在下拉列表中隐藏。

完整代码示例
from PyQt5.QtWidgets import QApplication, QComboBox, QWidget
import sys


class ComboBoxWidget(QWidget):
    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        self.setGeometry(100, 100, 400, 300)

        combo_box = QComboBox(self)
        combo_box.addItem('Item 1')
        combo_box.addItem('Item 2')
        combo_box.addItem('Item 3')
        combo_box.addItem('Item 4')
        combo_box.move(50, 50)

        combo_box_view = combo_box.view()

        item = 'Item 3'
        is_hidden = not combo_box_view.model().item(combo_box_view.model().index(combo_box.findText(item), 0)).isVisible()

        print(item, 'is hidden:', is_hidden)

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = ComboBoxWidget()
    sys.exit(app.exec_())

注意:在上面的示例中,我们仅检查了一个项。如果您需要检查多个项,您需要循环遍历每个项目,并使用相同的逻辑检查每个项目是否隐藏。