📌  相关文章
📜  PyQt5 - 不可编辑组合框的 lineedit 部分的边框颜色不同(1)

📅  最后修改于: 2023-12-03 14:45:45.528000             🧑  作者: Mango

PyQt5 - 不可编辑组合框的 lineedit 部分的边框颜色不同

问题描述

在使用 PyQt5 实现一个不可编辑的组合框时,发现 lineedit 部分的边框颜色与组合框自身的边框颜色不同。

原因分析

当使用系统默认样式时, lineedit 部分的边框颜色与组合框自身的边框颜色相同。但当我们设置了组合框的样式时,会覆盖掉 lineedit 部分的样式,导致不一致的边框颜色。

解决方法
方法一:设置 lineedit 样式

我们可以设置 lineedit 的样式,使其与组合框自身的边框颜色相同。

# 设置 lineedit 样式
combo.lineEdit().setStyleSheet("""
    QFrame{
        border: 1px solid gray;
        border-radius: 3px;
        background-color: #FFFFFF;
    }    
""")
方法二:修改组合框样式

我们也可以修改组合框自身的样式,使其与 lineedit 部分的边框颜色相同。在这里,我们只需要设置组合框的边框颜色为白色即可。

# 修改组合框样式
combo.setStyleSheet("""
    QComboBox{
        border: 1px solid gray;
        border-radius: 3px;
        background-color: #FFFFFF;
    }
""")
完整代码
from PyQt5.QtWidgets import QApplication, QComboBox
import sys

if __name__ == '__main__':
    app = QApplication(sys.argv)

    # 创建一个不可编辑的组合框
    combo = QComboBox()
    combo.setEditable(False)

    # 添加选项
    combo.addItems(['Option 1', 'Option 2', 'Option 3'])

    # 设置组合框样式
    combo.setStyleSheet("""
        QComboBox{
            border: 1px solid gray;
            border-radius: 3px;
            background-color: #FFFFFF;
        }
    """)

    # 设置 lineedit 样式
    combo.lineEdit().setStyleSheet("""
        QFrame{
            border: 1px solid gray;
            border-radius: 3px;
            background-color: #FFFFFF;
        }    
    """)

    combo.show()
    sys.exit(app.exec_())

以上是解决不可编辑组合框的 lineedit 部分的边框颜色不同的方法。希望对大家有所帮助。