📅  最后修改于: 2023-12-03 15:03:56.212000             🧑  作者: Mango
在使用PyQt5进行GUI开发时,经常会涉及到复选框的使用。本文将介绍如何使用PyQt5实现一个当鼠标悬停在中间复选框上时设置指示器的背景颜色的功能。
本文实现过程中主要应用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_()
运行程序后,当鼠标悬停在中间的复选框上时,指示器的背景颜色会变成蓝色:
通过上述步骤,我们成功实现了当鼠标悬停在中间复选框上时设置指示器的背景颜色的功能。