0%

pyqt5中的tableWidget添加checkBox、comboBox

添加checkBox

  QTableWidgetItem有CheckState属性,既能显示QCheckBox,也能读取状态

1
2
3
4
5
self.check = QtWidgets.QTableWidgetItem()
#把checkBox设为未选中状态
self.check.setCheckState(QtCore.Qt.Unchecked)
#在(x,y)添加checkBox
self.tableWidget.setItem(x,y,self.check)

注:在我测试时发现,若tableWidget不止一列,则必须给每行每列元素进行赋值,如果某一行未赋值完就对下一行赋值,会出现奇怪的错误

1
2
3
4
5
6
7
8
9
10
11
col=...
#设定列数
self.tableWidget.setColumnCount(col)

self.check = QtWidgets.QTableWidgetItem()
self.check.setCheckState(QtCore.Qt.Unchecked)
self.tableWidget.setItem(x,y,self.check)
#对该行其余元素赋值
for j in range(col):
if j!=y:
self.tableWidget.setItem(x,j,QtWidgets.QTableWidgetItem('...'))

  由于是之前一段时间写的,这里就没有对错误进行复现,就当是做一个简单的记录

  要是需要读取checkBox的状态

1
2
#获取(x,y)的状态
self.tableWidget.item(x,y).checkState()

参考:QTableWidget中checkBox状态判断

添加comboBox

1
2
3
4
5
6
comboBoxList=[...]

comboBox=QtWidgets.QComboBox()
comboBox.addItems(comboBoxList)
#在(x,y)添加comboBox
self.tableWidget.setCellWidget(x,y,comboBox)

  要是需要读取comboBox的值

1
2
#获取(x,y)的值
self.tableWidget.cellWidget(x,y).currentText()