pyqt5 在qtablewidget第一列单元格内增加复选框
时间: 2024-08-07 11:01:08 浏览: 63
Pyqt5 QTableWidget/QTableView 行表头添加复选框全选功能
5星 · 资源好评率100%
在PyQt5中,要在QTableWidget的第一列单元格内添加复选框,你可以这样做:
首先,你需要导入所需的模块:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTableWidget, QTableWidgetItem, QPushButton
from PyQt5.QtCore import Qt
```
然后,在`QWidget`的布局中创建一个QTableWidget,并设置它有表头和合适的列数,其中第一列用于放置复选框:
```python
class YourWidget(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.table = QTableWidget()
self.table.setColumnCount(2) # 两列,一列是数据,一列是复选框
self.table.setHorizontalHeaderLabels(['Data', 'Checkbox']) # 设置表头
for i in range(self.table.columnCount()):
item = QTableWidgetItem() # 初始化单元格
if i == 0:
# 第一列作为文本列,第二列作为复选框列
item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
else:
checkbox = QTableWidgetItem('', checkState=Qt.Unchecked)
checkbox.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsSelectable)
self.table.setItem(i, 0, item)
self.table.setCellWidget(i, 1, checkbox)
layout = QVBoxLayout()
layout.addWidget(self.table)
self.setLayout(layout)
```
最后,记得实例化并显示这个窗口:
```python
if __name__ == '__main__':
app = QApplication([])
widget = YourWidget()
widget.show()
app.exec_()
```
在这个例子中,每一行的第二列(索引为1)都会有一个复选框。用户可以点击这些复选框选择或取消选择对应的行。
阅读全文