📌  相关文章
📜  PyQt5 – 如何在鼠标悬停时更改复选框背景颜色(1)

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

PyQt5 – 如何在鼠标悬停时更改复选框背景颜色

在 PyQt5 中,我们可以通过鼠标悬停事件来更改复选框的背景颜色。以下是一个示例程序,可以演示如何在鼠标悬停时更改复选框的背景颜色。

代码
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QCheckBox, QWidget


class Example(QWidget):

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

        self.initUI()

    def initUI(self):

        cb = QCheckBox('Show title', self)
        cb.move(20, 20)
        cb.toggle()
        cb.stateChanged.connect(self.changeTitle)

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

    def changeTitle(self, state):

        if state == Qt.Checked:
            self.setStyleSheet("QCheckBox:hover { background-color: yellow }")
        else:
            self.setStyleSheet("QCheckBox:hover { background-color: white }")


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
说明

在上面的代码中,我们创建了一个名为 QCheckBox 的复选框。在初始化函数中,我们通过 toggle 方法将其设置为选中状态,并将其移动到窗口上(20, 20)的位置。我们还将其 stateChanged 信号连接到了 changeTitle 槽函数。

当复选框的状态改变时,changeTitle 槽函数将被调用。如果复选框被选中,我们将通过 setStyleSheet 方法来更改复选框的 CSS 样式。具体来说,我们将 QCheckBox:hover 的背景颜色更改为黄色。如果复选框未被选中,则将 QCheckBox:hover 的背景颜色更改为白色。

changeTitle 槽函数中,我们使用了 state 参数,它包含复选框的新状态。如果该参数的值为 Qt.Checked,则表示复选框被选中。

结论

在这个示例程序中,我们学习了如何在 PyQt5 中更改复选框的背景颜色。我们通过鼠标悬停事件来实现这一目标,并使用 QCheckBox:hover 的 CSS 样式来更改复选框的背景颜色。