PyQt5 – 鼠标悬停时为中间的复选框设置皮肤

  • Post category:Python

PyQt5是一个Python的GUI图形界面开发库。其中,鼠标悬停时为中间的复选框设置皮肤是其中一个常用的功能。下面详细讲解Python的“PyQt5 – 鼠标悬停时为中间的复选框设置皮肤”的完整使用攻略。

1. 安装PyQt5

使用PyQt5之前,需要先安装PyQt5模块。可通过pip命令进行安装,具体操作代码如下:

pip install PyQt5

2. 创建窗口

创建一个窗口并添加一个复选框。用来实现复选框的皮肤效果。代码如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox


class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        cb = QCheckBox('Checkbox', self)
        cb.move(20, 20)
        cb.toggle()        

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('CheckBox')
        self.show()


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

3. 添加鼠标悬浮事件

当鼠标悬浮在复选框上时,使用styleSheet修改复选框的背景色,同时在鼠标离开时还原为原来的背景色。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox


class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        cb = QCheckBox('Checkbox', self)
        cb.move(20, 20)
        cb.toggle()

        cb.setStyleSheet("QCheckBox:hover { background-color: #F0FFFF; }")

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('CheckBox')
        self.show()


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

4. 示例说明

这里提供两个示例说明:

  • 示例一:在QCheckBox外面添加QLabel,鼠标悬浮在QLabel上时改变QCheckBox的背景色。代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QLabel


class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        lb = QLabel('Label', self)
        lb.move(20, 20)

        cb = QCheckBox('Checkbox', self)
        cb.move(20, 40)
        cb.toggle()

        lb.setStyleSheet("QLabel:hover + QCheckBox { background-color: #F0FFFF; }")

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('CheckBox')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
  • 示例二:改变复选框的文字颜色。代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox


class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        cb = QCheckBox('Checkbox', self)
        cb.move(20, 20)
        cb.toggle()

        cb.setStyleSheet("""
            QCheckBox { color: red; } 
            QCheckBox:hover { background-color: #F0FFFF; color: blue; }
        """)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('CheckBox')
        self.show()


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

以上就是Python的“PyQt5 – 鼠标悬停时为中间的复选框设置皮肤”的完整使用攻略。