上文【如何确定CheckBox的勾选状态】【文章链接http://t.csdnimg.cn/MnPQW】提到了如何批量的生成CheckBox以及如何确定其勾选状态,今天,又遇到了新的问题。
我打算从一个文件中读取数据,数据为1、0,我想根据读取的数据来设置CheckBox的勾选状态,当读取的数据为1时,CheckBox为勾选状态,读取的数据为0时,CheckBox为未勾选状态,即我知道怎么检测CheckBox已有的状态,我又该怎样用代码去自由设置CheckBox的状态呢?
代码如下
import sys
from PyQt5.QtWidgets import QWidget, QCheckBox, QApplication, QTableWidget, QTableWidgetItem, QPushButton
app_1 = QApplication(sys.argv)
tw_1 = QTableWidget(10,2) # 设置10行2列的二维表格
list_Checkbox_1 = []
for i in range(10):
checkbox_i = QCheckBox(f'Checkbox_{i}') # 批量生成CheckBox
tw_1.setCellWidget(i,1,checkbox_i) # 将CheckBox添加到二维表格
list_Checkbox_1.append(checkbox_i) # 生成的CheckBox存到列表中。虽然上方有添加CheckBox到二维表格的操作,但此处仍然可以将上述CheckBox再添加到列表中。且感觉id一样。
# 将第1、3、5个CheckBox设置为已勾选
list_Checkbox_1[0].setChecked(True)
list_Checkbox_1[2].setChecked(True)
list_Checkbox_1[4].setChecked(True)
tw_1.resize(300,450)
tw_1.show()
sys.exit(app_1.exec_())
运行结果如下:
较有意思的是:你将生成的CheckBox添加到Tablewidget中后,还可以将其添加到列表中,就好像每一个CheckBox都在打两份工,一份是常驻Tablewidget,一份是常驻List。而且,你给列表中的CheckBox设置状态后,Tablewidget中的CheckBox也跟着变化。
换个比喻,每一个CheckBox都在Tablewidget中打工,租住在员工宿舍List,员工宿舍给每个人两套工作服,每天CheckBox穿了工作服去上班,但是穿哪一套没有强制规定。
呀,我真聪明。