📌  相关文章
📜  PyQt5 – 鼠标悬停时为关闭状态组合框添加边框(1)

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

PyQt5 – 鼠标悬停时为关闭状态组合框添加边框

在 PyQt5 中,我们可以通过添加样式表来修改 UI 控件的外观和行为。本文将介绍如何在关闭状态下为组合框添加边框并在鼠标悬停时移除它。

添加样式表

我们可以通过在 Qt Designer 中选择组合框、右键单击并选择“添加样式表”菜单项来添加样式表。也可以使用代码方式来添加样式表。我们可以在 Python 代码中使用 setStyleSheet 方法来设置样式表。

self.comboBox.setStyleSheet(
    "QComboBox:!editable {"
    "border: 1px solid gray;"
    "}"
    "QComboBox:hover:!editable {"
    "border: 1px solid blue;"
    "}")

上述代码中,我们使用了 !editable 伪状态标识符来指示非可编辑组合框。在关闭状态下,我们使用 gray 灰色来绘制边框。在鼠标悬停时,我们重置颜色为 blue 蓝色。

完整代码
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QComboBox


class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 创建组合框对象
        self.comboBox = QComboBox(self)
        self.comboBox.addItems(["Python", "Java", "C++", "C#"])
        self.comboBox.setGeometry(50, 50, 150, 30)
        # 设置样式表
        self.comboBox.setStyleSheet(
            "QComboBox:!editable {"
            "border: 1px solid gray;"
            "}"
            "QComboBox:hover:!editable {"
            "border: 1px solid blue;"
            "}")

        self.setGeometry(200, 200, 300, 200)
        self.setWindowTitle('PyQt5 - Border on ComboBox Hover')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
总结

在 PyQt5 中,我们可以使用样式表来自定义 UI 控件的外观和行为。本文介绍了如何在关闭状态下为组合框添加边框,并在鼠标悬停时移除它。