双击tablewidget表格单元格后,读取到的json数据写入到子窗口lineedit控件中展示,可进行编辑修改,如修改后点击子窗口“确定”按钮, 则将内容更改,并展示到相应的tablewidget表格位置,展示完整代码
时间: 2023-12-23 22:05:13 浏览: 105
好的,以下是一个示例代码。请注意,这里使用的是PyQt5库来实现GUI界面和表格操作,如果您使用的是其他库,可能需要做一些修改。
```python
import json
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTableWidget, QTableWidgetItem, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Table Widget Demo")
# 创建表格控件
self.table_widget = QTableWidget()
self.table_widget.setColumnCount(3)
self.table_widget.setHorizontalHeaderLabels(["Name", "Age", "Email"])
# 添加数据
self.add_data("Alice", 20, "alice@example.com")
self.add_data("Bob", 25, "bob@example.com")
self.add_data("Charlie", 30, "charlie@example.com")
# 双击单元格时弹出子窗口
self.table_widget.cellDoubleClicked.connect(self.show_edit_window)
# 设置主窗口布局
central_widget = QWidget()
central_layout = QVBoxLayout()
central_layout.addWidget(self.table_widget)
central_widget.setLayout(central_layout)
self.setCentralWidget(central_widget)
def add_data(self, name, age, email):
row_count = self.table_widget.rowCount()
self.table_widget.insertRow(row_count)
self.table_widget.setItem(row_count, 0, QTableWidgetItem(name))
self.table_widget.setItem(row_count, 1, QTableWidgetItem(str(age)))
self.table_widget.setItem(row_count, 2, QTableWidgetItem(email))
def show_edit_window(self, row, column):
# 获取单元格中的JSON数据
json_data = self.table_widget.item(row, column).text()
# 将JSON数据解析为Python对象
data = json.loads(json_data)
# 创建子窗口
edit_window = QWidget()
edit_layout = QVBoxLayout()
# 创建用于展示和编辑数据的控件
name_edit = QLineEdit(data["name"])
age_edit = QLineEdit(str(data["age"]))
email_edit = QLineEdit(data["email"])
edit_layout.addWidget(name_edit)
edit_layout.addWidget(age_edit)
edit_layout.addWidget(email_edit)
# 创建确定按钮
ok_button = QPushButton("OK")
ok_button.clicked.connect(lambda: self.update_data(row, column, name_edit.text(), age_edit.text(), email_edit.text()))
edit_layout.addWidget(ok_button)
# 设置子窗口布局
edit_window.setLayout(edit_layout)
edit_window.setWindowTitle("Edit Data")
edit_window.show()
def update_data(self, row, column, name, age, email):
# 创建新的Python对象
data = {"name": name, "age": int(age), "email": email}
# 将Python对象转换为JSON字符串
json_data = json.dumps(data)
# 更新表格单元格中的数据
self.table_widget.setItem(row, column, QTableWidgetItem(json_data))
if __name__ == "__main__":
app = QApplication([])
main_window = MainWindow()
main_window.show()
app.exec_()
```
这个示例代码创建了一个带有三列数据的表格控件,并在其中添加了一些数据。当用户双击单元格时,会弹出一个子窗口,该子窗口中包含用于展示和编辑数据的控件。用户在子窗口中编辑完数据后,点击确定按钮,该数据会被更新到相应的表格单元格中。
阅读全文
相关推荐

















