📌  相关文章
📜  PyQt5 - 将背景颜色设置为不可编辑 ComboBox 的 lineedit(1)

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

PyQt5 - 将背景颜色设置为不可编辑 ComboBox 的 lineedit

在 PyQt5 中,我们经常使用 QComboBox 作为下拉选择框,但是在一些情况下,我们可能需要将 QComboBox 的 lineedit 设置为不可编辑并更改其背景颜色。本文将介绍如何在 PyQt5 中实现这个功能。

设置 QComboBox 的 lineedit 为不可编辑

在 PyQt5 中,我们可以使用 setEditable() 方法来设置 QComboBox 的 lineedit 是否可编辑。下面是一个例子:

combo_box = QComboBox()
combo_box.setEditable(False) # 设置 lineedit 为不可编辑
更改 QComboBox 的 lineedit 的背景颜色

我们可以使用 stylesheet 来更改 QComboBox 的 lineedit 的背景颜色。下面是一个例子:

combo_box = QComboBox()
combo_box.setStyleSheet("QComboBox::drop-down { border: none; background-color: white; } QComboBox::down-arrow { image: url(down_arrow.png); } QComboBox::down-arrow:on { image: url(up_arrow.png); } QComboBox::lineEdit { background-color: gray; }")

在这个例子中,我们将 lineedit 的背景颜色设置为 gray。我们还可以更改其他 QComboBox 的样式,包括下拉箭头的样式等,具体的语法可以参考 Qt 文档。

将 lineedit 和下拉箭头分别更改背景颜色

如果我们想要将 lineedit 和下拉箭头分别更改背景颜色,我们可以使用以下的样式表语法:

combo_box.setStyleSheet("QComboBox::drop-down { border: none; background-color: white; } QComboBox::down-arrow { image: url(down_arrow.png); background-color: red; } QComboBox::down-arrow:on { image: url(up_arrow.png); } QComboBox::lineEdit { background-color: gray; }")

在这个例子中,我们将下拉箭头的背景色设置为 red。

完整代码

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

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

app = QApplication([])

combo_box = QComboBox()
combo_box.addItem("Item 1")
combo_box.addItem("Item 2")
combo_box.addItem("Item 3")
combo_box.setEditable(False) # 设置 lineedit 为不可编辑
combo_box.setStyleSheet("QComboBox::drop-down { border: none; background-color: white; } QComboBox::down-arrow { image: url(down_arrow.png); background-color: red; } QComboBox::down-arrow:on { image: url(up_arrow.png); } QComboBox::lineEdit { background-color: gray; }")

layout = QVBoxLayout()
layout.addWidget(combo_box)

window = QWidget()
window.setLayout(layout)
window.show()

app.exec_()

运行代码后,我们可以看到一个带有不可编辑的 lineedit 和更改背景颜色的下拉箭头的 QComboBox。