首先,需要导入 QtWidgets
和 QtGui
模块,并初始化一个 QWidget
对象。然后创建一个 QCheckBox
对象,并使用 setStyleSheet()
方法设置其鼠标悬浮时背景图片的路径。
from PyQt5.QtWidgets import QWidget, QCheckBox
from PyQt5.QtGui import QPixmap
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个QCheckBox对象并设置背景图片路径
checkbox = QCheckBox('Check Box', self)
checkbox.setGeometry(50, 50, 100, 100)
checkbox.setStyleSheet('QCheckBox:hover { background-image: url("hover.png"); }')
上述代码创建了一个 QCheckBox
对象,并使用 setGeometry()
方法设置其位置和大小,使用 setStyleSheet()
方法设置其鼠标悬浮时的背景图片。需要注意的是,在设置 background-image 属性时需要使用单引号或双引号将其括起来。
下面,我们再使用一个示例来实现在多个复选框中选定一个复选框时,其他复选框背景色变化的效果。我们创建一个 QFrame
对象,并在其中添加多个 QCheckBox
对象。当其中一个复选框被选中时,其他复选框的背景色将变为红色。
from PyQt5.QtWidgets import QFrame, QHBoxLayout, QCheckBox, QApplication
from PyQt5.QtGui import QColor
import sys
class MyWidget(QFrame):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建多个QCheckBox对象并添加到QFrame中
chkbox1 = QCheckBox('Check Box 1', self)
chkbox2 = QCheckBox('Check Box 2', self)
chkbox3 = QCheckBox('Check Box 3', self)
chkbox4 = QCheckBox('Check Box 4', self)
layout = QHBoxLayout(self)
layout.addWidget(chkbox1)
layout.addWidget(chkbox2)
layout.addWidget(chkbox3)
layout.addWidget(chkbox4)
# 为所有复选框设置背景色为白色
chkbox1.setStyleSheet('QCheckBox{ background-color: white; }')
chkbox2.setStyleSheet('QCheckBox{ background-color: white; }')
chkbox3.setStyleSheet('QCheckBox{ background-color: white; }')
chkbox4.setStyleSheet('QCheckBox{ background-color: white; }')
# 为复选框添加clicked信号槽函数
chkbox1.clicked.connect(lambda: self.changeColor(chkbox1))
chkbox2.clicked.connect(lambda: self.changeColor(chkbox2))
chkbox3.clicked.connect(lambda: self.changeColor(chkbox3))
chkbox4.clicked.connect(lambda: self.changeColor(chkbox4))
def changeColor(self, chkbox):
# 如果选中一个复选框,将其他复选框的背景色变为红色
if chkbox.isChecked():
for child in self.children():
if isinstance(child, QCheckBox):
if child != chkbox:
child.setStyleSheet('QCheckBox{ background-color: red; }')
# 如果取消选中,将所有复选框的背景色变为白色
else:
for child in self.children():
if isinstance(child, QCheckBox):
child.setStyleSheet('QCheckBox{ background-color: white; }')
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())