python中tableWidget中双击修改,并获取修改后的值
时间: 2024-03-15 22:46:27 浏览: 186
在 PyQt5 中,可以通过双击 QTableWidgetItem,使其变为可编辑状态,然后通过编辑完成信号,获取修改后的值。以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QDialog, QTableWidget, QTableWidgetItem, QVBoxLayout
from PyQt5.QtCore import Qt
class TableWidgetDemo(QDialog):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Table Widget Demo')
self.setGeometry(300, 300, 400, 200)
# 创建表格控件
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(3)
self.tableWidget.setColumnCount(2)
self.tableWidget.setHorizontalHeaderLabels(['Name', 'Age'])
# 设置表格为可编辑
self.tableWidget.setEditTriggers(QTableWidget.DoubleClicked)
# 添加数据
self.tableWidget.setItem(0, 0, QTableWidgetItem('Tom'))
self.tableWidget.setItem(0, 1, QTableWidgetItem('20'))
self.tableWidget.setItem(1, 0, QTableWidgetItem('Jack'))
self.tableWidget.setItem(1, 1, QTableWidgetItem('22'))
self.tableWidget.setItem(2, 0, QTableWidgetItem('Lucy'))
self.tableWidget.setItem(2, 1, QTableWidgetItem('18'))
# 绑定编辑完成信号
self.tableWidget.itemChanged.connect(self.onItemChanged)
# 布局管理器
layout = QVBoxLayout()
layout.addWidget(self.tableWidget)
self.setLayout(layout)
# 编辑完成信号槽函数
def onItemChanged(self, item):
row = item.row()
col = item.column()
value = item.text()
print('Row:', row, 'Column:', col, 'Value:', value)
if __name__ == '__main__':
app = QApplication([])
demo = TableWidgetDemo()
demo.show()
app.exec_()
```
在这个示例中,我们创建了一个 QTableWidget 控件,并将其设置为可编辑状态。然后,我们添加了一些数据,并绑定了编辑完成信号 itemChanged(),在信号槽函数 onItemChanged() 中,我们通过参数 item 获取了编辑后的行、列和值,并将其打印出来。
阅读全文