PyQt5组合框 不可编辑和鼠标悬停时的不同边框颜色

  • Post category:Python

这里是关于Python中PyQt5组合框不可编辑和鼠标悬停时的不同边框颜色的完整使用攻略。

PyQt5组合框不可编辑

在PyQt5中自定义组合框的样式需要用到QSS样式表。对于不可编辑的组合框可以通过如下代码设置样式表:

from PyQt5.QtWidgets import QComboBox

comboBox = QComboBox()
comboBox.setEditable(False)  # 设置不可编辑
comboBox.setStyleSheet("QComboBox::drop-down {border: 0px;}")  # 去掉下拉箭头的边框

其中,setEditable(False)设置组合框不可编辑,setStyleSheet()用于设置QSS样式表。

具体地,上面的样式表代码中,QComboBox::drop-down指代下拉箭头,border: 0px;用于将箭头的边框宽度设为0。

PyQt5组合框鼠标悬停时的不同边框颜色

对于组合框鼠标悬停时的不同边框颜色,同样需要用到QSS样式表。以下是一种实现方式:

from PyQt5.QtWidgets import QApplication, QComboBox
from PyQt5.QtGui import QPalette, QColor

class CustomComboBox(QComboBox):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setStyleSheet("QComboBox:hover{ border: 1px solid %s;}" % QColor(220, 220, 220).name())

if __name__ == "__main__":
    app = QApplication([])
    comboBox = CustomComboBox()
    comboBox.addItems(['item1', 'item2', 'item3'])
    comboBox.show()
    app.exec_()

上面的代码中,定义了一个自定义的ComboBox类CustomComboBox,重写了该类的构造函数,设置了组合框在鼠标悬停时的边框颜色。

具体地,上面的样式表代码中,QComboBox:hover表示鼠标移动到ComboBox上时的状态,border: 1px solid %s;用于设置边框为1像素的实线边框,% QColor(220, 220, 220).name()用于设置边框的颜色为灰色。可以根据自己的需要选择不同的颜色。

另外,需要注意的是,如果使用PyQt5的自带样式(即不设置样式表),需要将样式表中的QComboBox:hover改为QComboBox:on才能生效。