PyQt5是Python编程语言的GUI工具包,主要用于创建图形用户界面及其相关的应用程序。复选框是常见的交互式控件之一,通过复选框的选中状态可以实现一些特定的功能,如批量操作等。在PyQt5中,复选框的背景颜色可以使用QSS(Qt Style Sheets)样式表来进行自定义设置。
以下是使用PyQt5设置中级复选框背景颜色的完整攻略:
1. 安装PyQt5库
在Python环境中使用pip命令安装PyQt5库:
pip install PyQt5
2. 创建复选框控件
使用QCheckBox类创建复选框控件,并设置其初始化选中状态和文本内容:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QCheckBox
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(300, 300, 400, 300)
self.setWindowTitle("Checkbox Example")
self.initUI()
def initUI(self):
cb = QCheckBox("选项1", self)
cb.setGeometry(60, 50, 200, 20)
cb.setCheckState(True)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
sys.exit(app.exec_())
运行以上代码,将显示一个默认选中状态的复选框控件。
setGeometry()
方法用于设置控件的位置和大小。setCheckState()
方法用于设置复选框的选中状态,取值为Qt.Checked
、Qt.Unchecked
和Qt.PartiallyChecked
。
3. 自定义复选框控件的样式
使用QSS样式表自定义复选框控件的样式:
...
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(300, 300, 400, 300)
self.setWindowTitle("Checkbox Example")
self.initUI()
def initUI(self):
cb = QCheckBox("选项1", self)
cb.setObjectName("mycheckbox")
cb.setGeometry(60, 50, 200, 20)
cb.setCheckState(True)
self.setStyleSheet('''
#mycheckbox {
background-color: #99CCFF;
color: #FFFFFF
}
#mycheckbox::indicator {
width: 25px;
height: 25px;
}
#mycheckbox::indicator:checked {
background-color: #228B22;
}
''')
self.show()
...
setObjectName()
方法用于设置控件的名称,方便在QSS样式表中进行样式指定。setStyleSheet()
方法用于设置QSS样式表。
以上代码中,自定义的QSS样式表包含以下三个样式:
- 设置复选框控件的背景色为#99CCFF,字体颜色为#FFFFFF。
- 设置复选框控件框选框的大小为25px。
- 设置复选框控件选中状态的背景色为#228B22。
运行以上代码,将显示一个背景色为#99CCFF的复选框控件。选中状态时,复选框的选中框将变为绿色。
4. 示例说明
以下是两个使用PyQt5设置中级复选框背景颜色的示例:
示例1:多个复选框控件的样式设置
在一个窗口中放置多个复选框控件,并设置它们的背景颜色和选中状态的样式:
...
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(300, 300, 400, 300)
self.setWindowTitle("Checkbox Example")
self.initUI()
def initUI(self):
cb1 = QCheckBox("选项1", self)
cb1.setObjectName("mycheckbox1")
cb1.setGeometry(60, 50, 200, 20)
cb1.setCheckState(True)
cb2 = QCheckBox("选项2", self)
cb2.setObjectName("mycheckbox2")
cb2.setGeometry(60, 80, 200, 20)
cb2.setCheckState(True)
cb3 = QCheckBox("选项3", self)
cb3.setObjectName("mycheckbox3")
cb3.setGeometry(60, 110, 200, 20)
cb3.setCheckState(False)
self.setStyleSheet('''
#mycheckbox1,#mycheckbox2,#mycheckbox3 {
background-color: #99CCFF;
color: #FFFFFF
}
#mycheckbox1::indicator,#mycheckbox2::indicator,#mycheckbox3::indicator {
width: 25px;
height: 25px;
}
#mycheckbox1::indicator:checked,#mycheckbox2::indicator:checked {
background-color: #228B22;
}
''')
self.show()
...
运行以上代码,将显示三个背景色为#99CCFF的复选框控件。选中状态的复选框将变为绿色。
示例2:通过信号和槽函数控制样式变化
使用信号和槽函数,实现当某个复选框控件被选中时,其它未被选中的控件背景色改变:
...
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(300, 300, 400, 300)
self.setWindowTitle("Checkbox Example")
self.initUI()
def initUI(self):
self.cb1 = QCheckBox("选项1", self)
self.cb1.setObjectName("mycheckbox1")
self.cb1.setGeometry(60, 50, 200, 20)
self.cb1.setCheckState(True)
self.cb1.clicked.connect(self.onCheckBoxClicked)
self.cb2 = QCheckBox("选项2", self)
self.cb2.setObjectName("mycheckbox2")
self.cb2.setGeometry(60, 80, 200, 20)
self.cb2.setCheckState(False)
self.cb2.clicked.connect(self.onCheckBoxClicked)
self.checkBoxList = [self.cb1, self.cb2]
self.setStyleSheet('''
#mycheckbox1,#mycheckbox2 {
background-color: #99CCFF;
color: #FFFFFF;
}
#mycheckbox1::indicator,#mycheckbox2::indicator {
width: 25px;
height: 25px;
}
''')
self.show()
def onCheckBoxClicked(self):
sender = self.sender()
for checkBox in self.checkBoxList:
if checkBox != sender:
if sender.isChecked():
checkBox.setStyleSheet('''
#mycheckbox1,#mycheckbox2 {
background-color: #99CCFF;
color: #FFFFFF;
}
#mycheckbox1::indicator,#mycheckbox2::indicator {
width: 25px;
height: 25px;
}
''')
else:
checkBox.setStyleSheet('''
#mycheckbox1,#mycheckbox2 {
background-color: #FFFFFF;
color: #000000;
}
#mycheckbox1::indicator,#mycheckbox2::indicator {
width: 25px;
height: 25px;
}
''')
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
sys.exit(app.exec_())
...
运行以上代码,将显示两个背景色为#99CCFF的复选框控件。选中被点击的复选框时,未被选中的背景色将变为白色。反之亦然。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 中级复选框的背景颜色 - Python技术站