,可以通过以下步骤实现:
table_view = QTableView()
model = QStandardItemModel()
table_view.setModel(model)
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)
model.dataChanged.connect(update_dataframe)
完整的示例代码如下:
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函数。
领取专属 10元无门槛券
手把手带您无忧上云