如何获取数据帧头并将其显示在QTableWidget中?使用python

问题描述

我有一个python脚本,可以获取数据框并在QTableWidget中显示内容

问题是我无法显示行的标题

我什至需要使用 setHorizo​​ntalHeaderLabels 函数

预定义标题
 self.setHorizontalHeaderLabels(('Col X','Col Y'))

否则它将标题显示为索引号。

代码

import sys
import pandas as pd
from PyQt5.QtWidgets import QApplication,QWidget,QTableWidget,QTableWidgetItem,QHeaderView,QLineEdit,\
                            QPushButton,QItemDelegate,QVBoxLayout
from PyQt5.QtCore import Qt



class TableWidget(QTableWidget):
    def __init__(self,df):
        super().__init__()
        self.df=df
        self.setStyleSheet('font-size :35px')


        #set table dimension
        nRows,nColumns = self.df.shape
        self.setColumnCount(nColumns)
        self.setRowCount(nRows)

        self.setHorizontalHeaderLabels(('Col X','Col Y'))
        
        self.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)



        #data insertion
        for i in range(self.rowCount()):
            for j in range(self.columnCount()):
                self.setItem(i,j,QTableWidgetItem(str(self.df.iloc[i,j])))


class DFEditor(QWidget):
     data = {
         'col X':list('ABCD'),'col Y': [10,20,30,40]
     }
    df= pd.DataFrame(data)
    
        
    
    def __init__(self):
        super().__init__()
        self.resize(1200,800)

        mainLayout = QVBoxLayout()

        self.table = TableWidget(DFEditor.df)
        mainLayout.addWidget(self.table)

        self.setLayout(mainLayout)


 

 if __name__=='__main__':
    app=QApplication(sys.argv)

    demo = DFEditor()
    demo.show()
    sys.exit(app.exec_())

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)