首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在qTableView Python PyQt5中编辑后更新数据帧

,可以通过以下步骤实现:

  1. 创建一个QTableView对象,并设置数据模型为QStandardItemModel。
代码语言:txt
复制
table_view = QTableView()
model = QStandardItemModel()
table_view.setModel(model)
  1. 定义一个函数来更新数据帧。该函数将获取QTableView中的数据,并将其更新到数据帧中。
代码语言:txt
复制
def update_dataframe():
    dataframe = pd.DataFrame()
    for row in range(model.rowCount()):
        row_data = []
        for column in range(model.columnCount()):
            item = model.item(row, column)
            if item is not None:
                row_data.append(item.text())
            else:
                row_data.append('')
        dataframe = dataframe.append(pd.Series(row_data), ignore_index=True)
    # 在这里可以对数据帧进行进一步处理或操作
    print(dataframe)
  1. 将数据帧中的数据加载到QTableView中。可以使用QStandardItem对象来设置每个单元格的数据。
代码语言:txt
复制
def load_dataframe(dataframe):
    model.clear()
    model.setColumnCount(dataframe.shape[1])
    model.setRowCount(dataframe.shape[0])
    for row in range(dataframe.shape[0]):
        for column in range(dataframe.shape[1]):
            item = QStandardItem(str(dataframe.iloc[row, column]))
            model.setItem(row, column, item)
  1. 监听QTableView中数据的变化,并在编辑完成后调用更新数据帧的函数。
代码语言:txt
复制
model.dataChanged.connect(update_dataframe)

完整的示例代码如下:

代码语言:txt
复制
from PyQt5.QtWidgets import QApplication, QTableView
from PyQt5.QtGui import QStandardItemModel, QStandardItem
import pandas as pd

def update_dataframe():
    dataframe = pd.DataFrame()
    for row in range(model.rowCount()):
        row_data = []
        for column in range(model.columnCount()):
            item = model.item(row, column)
            if item is not None:
                row_data.append(item.text())
            else:
                row_data.append('')
        dataframe = dataframe.append(pd.Series(row_data), ignore_index=True)
    # 在这里可以对数据帧进行进一步处理或操作
    print(dataframe)

def load_dataframe(dataframe):
    model.clear()
    model.setColumnCount(dataframe.shape[1])
    model.setRowCount(dataframe.shape[0])
    for row in range(dataframe.shape[0]):
        for column in range(dataframe.shape[1]):
            item = QStandardItem(str(dataframe.iloc[row, column]))
            model.setItem(row, column, item)

app = QApplication([])
table_view = QTableView()
model = QStandardItemModel()
table_view.setModel(model)

dataframe = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
load_dataframe(dataframe)

model.dataChanged.connect(update_dataframe)

table_view.show()
app.exec_()

这个例子中,我们创建了一个QTableView对象,并使用QStandardItemModel作为数据模型。通过load_dataframe函数将数据帧加载到QTableView中,然后通过update_dataframe函数将QTableView中的数据更新到数据帧中。在数据发生变化时,会触发dataChanged信号,从而调用update_dataframe函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券