用python 语言 写一个TableWidget 添加复选框的代码
时间: 2023-03-15 12:11:17 浏览: 121
from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QCheckBox# 创建一个QTableWidget
tableWidget = QTableWidget(3,3)# 设置复选框
cb = QCheckBox()
for i in range(3):
for j in range(3):
tableWidget.setCellWidget(i, j, cb)
相关问题
tablewidget 复选框多选
TableWidget是PyQt库中的一个组件,它是一个表格视图,常用于数据展示和编辑。如果你想在TableWidget中添加复选框实现多选功能,你可以按照以下步骤操作:
1. **初始化TableWidget**:
首先创建一个`QTableWidget`实例,并设置列数、行数等属性。
```python
table = QTableWidget()
table.setColumnCount(3)
table.setRowCount(5)
```
2. **添加Header和Cells**:
添加表头(用`setHorizontalHeaderItem()`),然后遍历每一行添加单元格(`setItem()`),并包含一个`QTableWidgetItem`代表复选框。
```python
header = QTableWidgetItem("选择")
checkboxes = []
for row in range(table.rowCount()):
checkbox_item = QTableWidgetItem("")
checkbox = QTableWidgetItem()
checkbox.setCheckState(Qt.Unchecked) # 设置默认状态
checkbox_item.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
checkbox_item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
checkbox_item.setData(Qt.CheckStateRole, checkbox.checkState())
checkboxes.append(checkbox)
table.setItem(row, 0, checkbox_item)
table.setItem(row, 1, QTableWidgetItem("数据"))
table.setItem(row, 2, QTableWidgetItem("描述"))
```
3. **响应信号**:
给每个复选框关联一个信号处理器,当复选框的状态改变时,可以获取所选行的数据。
```python
def update_selection(index):
if index.column() == 0 and index.checkState() == Qt.Checked:
print(f"选择了第{index.row()}行")
for checkbox in checkboxes:
checkbox.stateChanged.connect(update_selection)
```
4. **显示TableWidget**:
最后将`table`放入窗口或布局中展示给用户。
```python
app = QApplication([])
window = QWidget()
layout = QVBoxLayout(window)
layout.addWidget(table)
window.show()
app.exec_()
```
pyqt在tablewidget前面循环添加复选框
可以使用setItem()方法在TableWidget中添加复选框。具体步骤如下:
1. 创建复选框并设置其属性。
```python
checkbox = QtWidgets.QCheckBox()
checkbox.setTristate(False)
checkbox.setCheckState(QtCore.Qt.Unchecked)
```
2. 将复选框添加到TableWidget的单元格中。
```python
cell_widget = QtWidgets.QWidget()
cell_layout = QtWidgets.QHBoxLayout(cell_widget)
cell_layout.addWidget(checkbox)
cell_layout.setAlignment(QtCore.Qt.AlignCenter)
cell_layout.setContentsMargins(0, 0, 0, 0)
cell_widget.setLayout(cell_layout)
table_widget.setCellWidget(row_index, column_index, cell_widget)
```
3. 循环添加多个复选框。
```python
for i in range(row_count):
checkbox = QtWidgets.QCheckBox()
checkbox.setTristate(False)
checkbox.setCheckState(QtCore.Qt.Unchecked)
cell_widget = QtWidgets.QWidget()
cell_layout = QtWidgets.QHBoxLayout(cell_widget)
cell_layout.addWidget(checkbox)
cell_layout.setAlignment(QtCore.Qt.AlignCenter)
cell_layout.setContentsMargins(0, 0, 0, 0)
cell_widget.setLayout(cell_layout)
table_widget.setCellWidget(i, 0, cell_widget)
```
阅读全文
相关推荐













