PyQt5学习笔记10 - QCheckBox & QCombo
2021-05-01 本文已影响0人
庄周幻梦
前文
PyQt5学习笔记5 - QWidget
PyQt5学习笔记6 - QLabel
PyQt5学习笔记7 - QLineEdit
PyQt5学习笔记8 - QTextEdit
PyQt5学习笔记9 - QPushButton & QRadioButton
本文概述
QCheckBox
,QComboBox
QCheckBox
QCheckBox类继承自QAbstractButton类, 它提供了一组带文本标签的复选框,用于可以选择多个选项。和QPushButton一样,复选框可以显示文本或者图标,其中文本可以通过构造函数或者setText()
来设置,图标可以通过setIcon()
来设置。在视觉上,QButtonGroup可以把许多复选框组织在一起。
只要复选框被选中或者取消选中,都会发射一个stateChanged
信号。如果想在复选框状态改变时触发相应的行为,请连接这个信号,可以使用isChecked()
来查询复选框是否被选中。除了选中和未选中两种状态,QCheckBox还提供了第三种状态(半选中)PartiallyChecked
来表明"没有变化"。当需要为用户提供一个选中或者未选中复选框的选择时,这种状态时很有用的。如果需要第三种状态,则可以通过setTristate()
来使他生效,并使用checkState()
来查询当前的切换状态。
QCheckBox
常用方法
方法 | 描述 |
---|---|
setChecked() |
设置复选框的状态,设置为True时表示选中复选框,设置为False时表示取消选中复选框 |
setText() |
设置复选框的显示文本 |
text() |
返回复选框的显示文本 |
isChecked() |
检查复选框是否被选中 |
setTriState() |
设置复选框为一个三态复选框 |
三态复选框有三种状态
名称 | 值 | 含义 |
---|---|---|
Qt.Checked |
2 | 组件没有被选中(默认) |
Qt.Partiallychecked |
1 | 组件被半选中 |
Qt.Unchecked |
0 | 组件被选中 |
实例1:QCheckBox按钮的使用
import sys
from PyQt5.QtWidgets import QWidget, QGroupBox, QHBoxLayout, QCheckBox, QGraphicsTransform, QApplication
from PyQt5.QtCore import Qt
class CheckBoxDemo(QWidget):
def __init__(self, parent=None):
super(CheckBoxDemo, self).__init__(parent)
group_box = QGroupBox('CheckBoxes')
group_box.setFlat(True)
layout = QHBoxLayout()
self.check_box_1 = QCheckBox('Checkbox1')
self.check_box_1.setChecked(True)
self.check_box_1.stateChanged.connect(self.button_state)
self.check_box_2 = QCheckBox('Checkbox2')
self.check_box_2.toggled.connect(self.button_state)
self.check_box_3 = QCheckBox('Checkbox3')
self.check_box_3.setTristate(True)
self.check_box_3.setCheckState(Qt.PartiallyChecked)
self.check_box_3.stateChanged.connect(self.button_state)
layout.addWidget(self.check_box_1)
layout.addWidget(self.check_box_2)
layout.addWidget(self.check_box_3)
group_box.setLayout(layout)
main_layout = QHBoxLayout()
main_layout.addWidget(group_box)
self.setLayout(main_layout)
self.setWindowTitle('CheckboxDemo')
def button_state(self):
strings = f"""{self.check_box_1.text()}, isChecked={self.check_box_1.isChecked()}, checkState={self.check_box_1.checkState()}
{self.check_box_2.text()}, isChecked={self.check_box_2.isChecked()}, checkState={self.check_box_2.checkState()}
{self.check_box_3.text()}, isChecked={self.check_box_3.isChecked()}, checkState={self.check_box_3.checkState()}
"""
print(strings)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = CheckBoxDemo()
demo.show()
sys.exit(app.exec())
QComboBox 下拉列表框
QComboBox 是一个集按钮和下拉选项于一体的控件,也被成为下拉列表框。
QComboBox类常用方法
方法 | 描述 |
---|---|
addItem() |
添加一个下拉选项 |
addItems() |
从列表中添加下拉选项 |
Clear() |
删除下拉选项集合中的所有选项 |
count() |
返回下拉选项集合中的数目 |
currentText() |
返回选中选项的文本 |
itemText(i) |
获取索引为i的选项文本 |
currentIndex() |
返回选中选项的索引 |
setItemText(index, text) |
改变序号为index项的文本 |
QComboBox类常用信号
信号 | 含义 |
---|---|
Activated |
当用户选中一个下拉选项时发射该信号 |
currentIndexChanged |
当下拉选项的索引发生改变时发射该信号 |
highlighted |
当选中一个已经选中的下拉选项时,发射该信号 |
QComboBox按钮的使用
import sys
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QComboBox, QApplication
class ComboBoxDemo(QWidget):
def __init__(self, parent=None):
super(ComboBoxDemo, self).__init__(parent)
self.setWindowTitle('ComboBoxDemo')
self.resize(400, 250)
layout = QVBoxLayout()
self.label = QLabel('')
self.cb_box = QComboBox()
self.cb_box.addItem('C')
self.cb_box.addItem('C++')
self.cb_box.addItems(['Java', 'JavaScript', 'Python'])
self.cb_box.currentIndexChanged.connect(self.selection_change)
layout.addWidget(self.label)
layout.addWidget(self.cb_box)
self.setLayout(layout)
def selection_change(self, i):
self.label.setText(self.cb_box.currentText())
print("Items is in the list are: ")
for count in range(self.cb_box.count()):
print(f'item {count} = {self.cb_box.itemText(count)}')
print(f'Current index {i} selection changed {self.cb_box.currentText()}')
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = ComboBoxDemo()
demo.show()
sys.exit(app.exec())
如有侵权,请联系删除