python pyqt6 qtableview 居中显示dataframe 数据
时间: 2023-12-05 19:06:03 浏览: 65
你可以使用QItemDelegate来自定义QTableView中单元格的显示方式,以下是一个示例代码:
```python
from PyQt6.QtCore import Qt
from PyQt6.QtGui import QStandardItemModel, QStandardItem, QItemDelegate
from PyQt6.QtWidgets import QApplication, QTableView, QStyledItemDelegate
import pandas as pd
class CenterDelegate(QStyledItemDelegate):
def initStyleOption(self, option, index):
super().initStyleOption(option, index)
option.displayAlignment = Qt.AlignmentFlag.AlignCenter
if __name__ == "__main__":
app = QApplication([])
# 创建一个QTableView
tableview = QTableView()
# 创建一个QStandardItemModel,并将其设置为tableview的model
model = QStandardItemModel()
tableview.setModel(model)
# 读取数据,创建一个DataFrame
data = {"A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]}
df = pd.DataFrame(data)
# 将DataFrame中的数据添加到QStandardItemModel中
for i in range(df.shape[0]):
row = []
for j in range(df.shape[1]):
item = QStandardItem(str(df.iloc[i, j]))
row.append(item)
model.appendRow(row)
# 设置QTableView中每个单元格的居中显示方式
delegate = CenterDelegate()
tableview.setItemDelegate(delegate)
# 显示QTableView
tableview.show()
app.exec()
```
在这个示例代码中,我们创建了一个名为`CenterDelegate`的自定义`QItemDelegate`类,该类重写了`initStyleOption`方法,将单元格的显示方式设置为居中显示。然后,我们将这个自定义`QItemDelegate`对象设置为`QTableView`中每个单元格的委托,以实现居中显示`DataFrame`数据。