📌  相关文章
📜  PyQt5 ComboBox - 不可编辑和鼠标悬停时不同的边框颜色(1)

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

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

在 PyQt5 中,我们可以使用 QComboBox 控件来实现下拉框。但是,当下拉框不可编辑时,边框颜色和普通边框颜色一样,可能会使用户混淆。此外,当用户将鼠标悬停在下拉框上时,我们可能希望显示不同的边框颜色。因此,下面介绍在 PyQt5 中如何设置不可编辑的下拉框和鼠标悬停时的边框颜色。

设置不可编辑的下拉框

要将下拉框设置为不可编辑,我们可以通过将 QComboBox 控件的 editable 属性设置为 False 来实现。例如,下面的代码创建了一个不可编辑的下拉框:

from PyQt5.QtWidgets import QApplication, QComboBox, QVBoxLayout, QWidget

app = QApplication([])
window = QWidget()

combo_box = QComboBox()
combo_box.addItems(['Apple', 'Banana', 'Cherry'])
combo_box.setEditable(False)

layout = QVBoxLayout(window)
layout.addWidget(combo_box)

window.show()
app.exec_()

这个程序创建了一个包含三个选项的不可编辑下拉框(苹果、香蕉和樱桃)。当用户单击下拉箭头时,将显示这些选项。由于该下拉框是不可编辑的,因此用户无法在文本框中输入自定义值。

设置鼠标悬停时的边框颜色

要设置下拉框的鼠标悬停时的边框颜色,我们需要使用 QSS (Qt样式表) 。下面的代码演示了如何为下拉框设置鼠标悬停时的边框颜色:

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QComboBox, QVBoxLayout, QWidget

app = QApplication([])
window = QWidget()

combo_box = QComboBox()
combo_box.addItems(['Apple', 'Banana', 'Cherry'])

# 使用 QSS 为下拉框设置鼠标悬停时的边框颜色
combo_box.setStyleSheet('''
    QComboBox:hover {{
        border: 1px solid {border_color};
    }}
'''.format(border_color=Qt.red.name()))

layout = QVBoxLayout(window)
layout.addWidget(combo_box)

window.show()
app.exec_()

这个程序创建了一个包含三个选项的可编辑下拉框,并将其鼠标悬停时的边框颜色设置为红色。要设置不同的颜色,可以更改 border_color 的值。

提示:要设置 QComboBox 的边框颜色,请使用 QComboBox::drop-down {border-color: xxx}