PyQt5 – 当按下时为不可编辑的关闭状态组合框添加边框

  • Post category:Python

下面就为您详细讲解如何在 PyQt5 中为不可编辑的关闭状态组合框添加边框。

1. 添加边框的方法

在 PyQt5 中添加组合框的边框,在 QComboBox 的样式表中添加下面三个属性即可:

QComboBox:!editable {
    border: 1px solid gray;  /*边框粗细和颜色*/
    border-radius: 5px;     /*边框圆角半径*/
    padding: 2px;
}

其中,!editable 表示组合框不可编辑状态,border表示边框粗细和颜色,border-radius表示边框圆角半径,padding表示内边距大小。

2. 示例说明

以下是两个示例说明,分别为 PyQt5 中如何添加组合框边框和如何禁用组合框输入:

示例一:添加组合框边框

以下是一个完整的示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QComboBox


class ComboboxDemo(QComboBox):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.addItems(['A', 'B', 'C', 'D'])
        self.setEditable(True)

        self.lineEdit().setReadOnly(True)  # 禁止组合框可编辑输入
        self.setStyleSheet('QComboBox:!editable {border: 1px solid gray;border-radius: 5px;padding: 2px;}')  # 添加边框

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = ComboboxDemo()
    demo.show()
    sys.exit(app.exec_())

运行该程序,显示出来的组合框将不再有默认的边框,而是显示为灰色的边框,同时禁止用户在组合框中输入。

示例二:禁用组合框输入

以下是另一个示例代码:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QComboBox


class ReadonlyCombobox(QComboBox):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.addItems(['A', 'B', 'C', 'D'])
        self.setEditable(True)

        self.lineEdit().setReadOnly(True)  # 禁止组合框可编辑输入
        self.setInsertPolicy(QComboBox.NoInsert)  # 禁止插入新的选项
        self.view().setSelectionMode(0)  # 禁止多选
        self.view().setEditTriggers(0)  # 禁止编辑

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = ReadonlyCombobox()
    demo.show()
    sys.exit(app.exec_())

运行该程序,显示出来的组合框同样不再允许用户在其中输入,也不能插入新选项,同时禁止多选和编辑现有的选项。