首先,PyQt5是一个Python的GUI库,可以用于创建各种不同类型的窗口和小部件。而复选框(QCheckBox)是其中一种小部件,用于允许用户从一组选项中选择多个选项。以下是在PyQt5中设置复选框皮肤的完整攻略:
1. 导入必要的库
首先,在使用PyQt5之前,我们需要导入PyQt5库,以及其他必要扩展库。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox
from PyQt5.QtCore import Qt
2. 创建复选框
接下来,我们需要创建一个QCheckBox部件,并设置其被按下时触发的信号,以便在该复选框被按下时设置其皮肤。
class CheckBox(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个复选框,名称为“Check Box”,并将其添加到窗口中
self.cb = QCheckBox('Check Box', self)
self.cb.move(20, 20)
# 为复选框绑定槽函数,即被按下时触发的事件
self.cb.stateChanged.connect(self.checkBoxState)
self.show()
# 定义槽函数,用于设置复选框皮肤
def checkBoxState(self, state):
if state == Qt.Checked:
self.cb.setStyleSheet("QCheckBox::indicator {background-color: #f2799b;}")
else:
self.cb.setStyleSheet("QCheckBox::indicator {background-color: #bbb;}")
此处创建了一个名为“CheckBox”的QWidget类,其中创建了一个名为“cb”的QCheckBox部件,并将其添加到窗口中。接着,为该复选框绑定了一个被按下时触发的槽函数“checkBoxState”。
3. 设置复选框皮肤
最后,在被按下时触发的槽函数“checkBoxState”中,我们需要设置复选框的皮肤。这可以通过设置QCheckBox的样式表来实现。当复选框被选中时,背景色将设置为“#f2799b”,否则将被设置为“#bbb”。
if state == Qt.Checked:
self.cb.setStyleSheet("QCheckBox::indicator {background-color: #f2799b;}")
else:
self.cb.setStyleSheet("QCheckBox::indicator {background-color: #bbb;}")
4. 示例
下面是两个使用PyQt5设置复选框皮肤的示例。
示例1: 基本复选框
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox
from PyQt5.QtCore import Qt
class CheckBox(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个复选框,名称为“Check Box”,并将其添加到窗口中
self.cb = QCheckBox('Check Box', self)
self.cb.move(20, 20)
# 为复选框绑定槽函数,即被按下时触发的事件
self.cb.stateChanged.connect(self.checkBoxState)
self.show()
# 定义槽函数,用于设置复选框皮肤
def checkBoxState(self, state):
if state == Qt.Checked:
self.cb.setStyleSheet("QCheckBox::indicator {background-color: #f2799b;}")
else:
self.cb.setStyleSheet("QCheckBox::indicator {background-color: #bbb;}")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = CheckBox()
sys.exit(app.exec_())
执行以上代码后,会创建一个名为“Check Box”的复选框,当被按下时,其背景色将会更改。
示例2:多个复选框
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QVBoxLayout
from PyQt5.QtCore import Qt
class CheckBox(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建多个复选框,并将其添加到垂直布局中
layout = QVBoxLayout()
self.cb1 = QCheckBox('Red', self)
self.cb2 = QCheckBox('Blue', self)
self.cb3 = QCheckBox('Green', self)
layout.addWidget(self.cb1)
layout.addWidget(self.cb2)
layout.addWidget(self.cb3)
# 为每个复选框绑定槽函数,即被按下时触发的事件
self.cb1.stateChanged.connect(self.checkBoxState)
self.cb2.stateChanged.connect(self.checkBoxState)
self.cb3.stateChanged.connect(self.checkBoxState)
self.setLayout(layout)
self.show()
# 定义槽函数,用于设置复选框皮肤
def checkBoxState(self, state):
sender = self.sender()
if state == Qt.Checked:
sender.setStyleSheet("QCheckBox::indicator {background-color: #f2799b;}")
else:
sender.setStyleSheet("QCheckBox::indicator {background-color: #bbb;}")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = CheckBox()
sys.exit(app.exec_())
执行以上代码后,会创建三个复选框,当其中任何一个被按下时,其背景色将会更改。