如何在python中使用pyqt5提取数据帧标头值并存储在qlistwidget中

问题描述

我有一个GUI应用程序,它在QtableView中将csv文件作为数据帧加载并对数据执行一些功能,其中之一是提取标头并将其存储在带有复选框或一组复选框的QlistWidget中。我能够只打印标题值。

代码:

from PyQt5 import QtCore,QtGui,QtWidgets

import pandas as pd

from PandasModel import PandasModel

import seaborn as sns
import cufflinks as cf
import plotly
import plotly.offline as py
import plotly.express as px 
import plotly.graph_objs as go
from plotly.offline.offline import iplot
cf.go_offline()
cf.set_config_file(offline=False,world_readable=True)


class Widget(QtWidgets.QWidget):
    def __init__(self,parent=None):
        QtWidgets.QWidget.__init__(self,parent=None)
        self.gridLayout_3 = QtWidgets.QGridLayout(self)
        self.gridLayout_3.setObjectName("gridLayout_3")
       
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
       
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        
        self.pathLE = QtWidgets.QLineEdit(self)
        self.gridLayout_2.addWidget(self.pathLE,1,1)
        

        
        self.loadBtn = QtWidgets.QPushButton("Select File",self)
        self.loadBtn.clicked.connect(self.loadFile)
        self.gridLayout_2.addWidget(self.loadBtn,1)
        self.gridLayout_3.addLayout(self.gridLayout_2,4)

       
        self.displayHeader = QtWidgets.QPushButton("Display header",self)
        self.displayHeader.clicked.connect(lambda: self.print_df_header(self.df))
        self.gridLayout.addWidget(self.displayHeader,2,1)

        self.pandasTv = QtWidgets.QTableView(self)
        self.verticalLayout.addWidget(self.pandasTv)

        self.pandasTv.setSortingEnabled(True)


     def loadFile(self):
        fileName,_ = QtWidgets.QFileDialog.getOpenFileName(self,"Open File","","CSV Files (*.csv)");
        self.pathLE.setText(fileName)
        df = pd.read_csv(fileName)
        model = PandasModel(df)
        self.pandasTv.setModel(model)
        self.df = df


    def print_df_header(self,df):
        print(self.df.columns.tolist())

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

解决方法

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

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

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