📌  相关文章
📜  PyQt5 - 当鼠标悬停在中间复选框上时设置指示器的背景颜色(1)

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

PyQt5 - 当鼠标悬停在中间复选框上时设置指示器的背景颜色

简介

在使用PyQt5进行GUI开发时,经常会涉及到复选框的使用。本文将介绍如何使用PyQt5实现一个当鼠标悬停在中间复选框上时设置指示器的背景颜色的功能。

实现步骤

本文实现过程中主要应用QSS样式和鼠标事件。

QSS样式

首先,在QSS样式中定义鼠标悬停时的样式:

QCheckBox::indicator:hover {
    background-color: blue;
}
鼠标事件

接下来,我们在程序中定义鼠标进入、移出事件,通过修改样式来实现指示器的背景颜色的变化。

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

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

    def initUI(self):
        vbox = QVBoxLayout()

        # 创建复选框
        self.cb = QCheckBox('中间的复选框', self)

        # 设置样式
        self.cb.setStyleSheet('''
          QCheckBox::indicator {
              width: 50px;
              height: 50px;
          }

          QCheckBox::indicator:checked {
              image: url(CheckMark.png);
          }

          QCheckBox::indicator:unchecked {
              background-color: yellow;
          }

          QCheckBox::indicator:hover {
              background-color: blue;
          }
        ''')

        # 鼠标事件
        self.cb.enterEvent = lambda event: self.cb.setStyleSheet('''
          QCheckBox::indicator:checked {
              image: url(CheckMark.png);
          }

          QCheckBox::indicator:unchecked {
              background-color: yellow;
          }

          QCheckBox::indicator:hover {
              background-color: blue;
          }
        ''')

        self.cb.leaveEvent = lambda event: self.cb.setStyleSheet('''
          QCheckBox::indicator:checked {
              image: url(CheckMark.png);
          }

          QCheckBox::indicator:unchecked {
              background-color: yellow;
          }
        ''')

        vbox.addWidget(self.cb)
        self.setLayout(vbox)

if __name__ == '__main__':
    app = QApplication([])
    win = CheckBoxDemo()
    win.show()
    app.exec_()
效果展示

运行程序后,当鼠标悬停在中间的复选框上时,指示器的背景颜色会变成蓝色:

效果展示

总结

通过上述步骤,我们成功实现了当鼠标悬停在中间复选框上时设置指示器的背景颜色的功能。