首先,我们需要导入PyQt5模块中的相关模块,代码如下:
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QHBoxLayout
from PyQt5.QtGui import QPalette, QColor
from PyQt5.QtCore import Qt
import sys
接下来我们需要创建一个QWidget窗口,并添加一个横向的QHBoxLayout布局管理器,代码如下:
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
hbox = QHBoxLayout() # 创建横向布局管理器
cb = QCheckBox('Show title') # 创建 QCheckBox
hbox.addWidget(cb) # 将 QCheckBox 添加到横向布局管理器
self.setLayout(hbox) # 应用横向布局管理器
然后,我们需要在QCheckBox上悬停时,更改其背景色。实现的方法是,我们需要重载QCheckBox的enterEvent和leaveEvent方法并在其中更改背景色,代码如下:
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
hbox = QHBoxLayout()
cb = MyCheckBox('Show title', self) # 自定义复选框 MyCheckBox
hbox.addWidget(cb)
self.setLayout(hbox)
class MyCheckBox(QCheckBox):
def __init__(self, title, parent):
super().__init__(title, parent)
def enterEvent(self, event):
self.setStyleSheet("background-color: lightGray;")
super().enterEvent(event)
def leaveEvent(self, event):
self.setStyleSheet("")
super().leaveEvent(event)
在这里,我们创建了一个名为MyCheckBox的自定义QCheckBox类,并在其中重载了enterEvent和leaveEvent方法。在enterEvent方法中,我们设置背景颜色为lightGray,然后在leaveEvent方法中将背景颜色还原为默认值。
示例一:
这是一个基本的示例,显示了包含单个复选框的QWidget。
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
示例二:
这个例子演示了在多个QWidget上用MyCheckBox添加复选框。
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
hbox1 = QHBoxLayout()
hbox2 = QHBoxLayout()
cb1 = MyCheckBox('Show title', self)
cb2 = MyCheckBox('Show author', self)
hbox1.addWidget(cb1)
hbox2.addWidget(cb2)
self.setLayout(hbox1)
self.setLayout(hbox2)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
综上所述,我们可以使用MyCheckBox类来修改复选框的背景色,从而实现复选框在悬停时显示的更改背景颜色的效果。