前文
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())
如有侵权,请联系删除
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...
