以下是关于Python中PyQt5复选框圆形指示器的详细使用攻略。
简介
PyQt5是Python下的一个非常强大的GUI框架,可以用于开发跨平台的桌面应用。复选框是一种常见的GUI控件,而圆形指示器是表示复选框被选中的一种形式。在PyQt5中,可以使用QCheckBox控件来创建复选框,同时通过设置QSS样式表来实现圆形指示器。
使用步骤
以下是使用PyQt5实现复选框圆形指示器的步骤:
- 创建QCheckBox控件并设置其状态为未选中。
checkbox = QCheckBox("复选框", self)
checkbox.setChecked(False)
- 创建QSS样式表并设置选中时的样式。
style = """
QCheckBox::indicator:checked {
border: 2px solid black;
border-radius: 6px;
background-color: green;
width: 9px;
height: 9px;
}
"""
- 设置QCheckBox控件的样式表为上述样式。
checkbox.setStyleSheet(style)
- 设置槽函数,响应复选框状态变化事件。
“`
def onCheckboxChanged(state):
print(“复选框状态发生变化,当前状态为:”, state)
checkbox.stateChanged.connect(onCheckboxChanged)
“`
至此,实现复选框圆形指示器的过程已经完成。
示例1:单个复选框
以下是实现单个复选框圆形指示器的示例代码:
from PyQt5.QtWidgets import QApplication, QCheckBox, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("复选框测试")
self.setGeometry(300, 300, 300, 200)
checkbox = QCheckBox("复选框", self)
checkbox.setGeometry(50, 50, 100, 30)
checkbox.setChecked(False)
style = """
QCheckBox::indicator:checked {
border: 2px solid black;
border-radius: 6px;
background-color: green;
width: 9px;
height: 9px;
}
"""
checkbox.setStyleSheet(style)
def onCheckboxChanged(state):
print("复选框状态发生变化,当前状态为:", state)
checkbox.stateChanged.connect(onCheckboxChanged)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
代码运行后,可以看到一个包含复选框的窗口,复选框未选中时呈空心样式,选中后呈圆形实心绿色。
示例2:多个复选框
以下是实现多个复选框圆形指示器的示例代码:
from PyQt5.QtWidgets import QApplication, QCheckBox, QWidget, QVBoxLayout
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("复选框测试")
self.setGeometry(300, 300, 300, 200)
layout = QVBoxLayout()
self.setLayout(layout)
checkbox1 = QCheckBox("复选框1", self)
checkbox1.setChecked(False)
style1 = """
QCheckBox::indicator:checked {
border: 2px solid black;
border-radius: 6px;
background-color: green;
width: 9px;
height: 9px;
}
"""
checkbox1.setStyleSheet(style1)
checkbox1.stateChanged.connect(lambda state: self.checkboxStateChanged(state, 1))
layout.addWidget(checkbox1)
checkbox2 = QCheckBox("复选框2", self)
checkbox2.setChecked(True)
style2 = """
QCheckBox::indicator:checked {
border: 2px solid black;
border-radius: 6px;
background-color: red;
width: 9px;
height: 9px;
}
"""
checkbox2.setStyleSheet(style2)
checkbox2.stateChanged.connect(lambda state: self.checkboxStateChanged(state, 2))
layout.addWidget(checkbox2)
def checkboxStateChanged(self, state, index):
print("复选框%d状态发生变化,当前状态为:%d" % (index, state))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
代码运行后,可以看到一个包含两个复选框的窗口,复选框1未选中时呈空心样式,选中后呈圆形实心绿色;复选框2初始选中时呈圆形实心红色,取消选中后呈空心样式。同时,控制台输出每个复选框状态变化时的信息。