如何在python中打印pyqt5中的数据帧值

2024-09-27 23:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它使用pyqt5在TableView中显示所选择的数据帧

我有两个功能:

  • 第一个函数加载一个csv文件
  • 第二个功能是将数据帧打印到控制台,但它不起作用

系统显示以下错误:

print(self.df) AttributeError: 'Widget' object has no attribute 'df'

代码:

from PandasModel import PandasModel


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent=None)
        
        vLayout = QtWidgets.QVBoxLayout(self)
        hLayout = QtWidgets.QHBoxLayout()
        
        self.pathLE = QtWidgets.QLineEdit(self)
        hLayout.addWidget(self.pathLE)
        
        self.loadBtn = QtWidgets.QPushButton("Select File", self)
        hLayout.addWidget(self.loadBtn)
        vLayout.addLayout(hLayout)

        self.pandasTv = QtWidgets.QTableView(self)
        vLayout.addWidget(self.pandasTv)
        
        self.loadBtn.clicked.connect(self.loadFile)
        self.pandasTv.setSortingEnabled(True)

        self.dislayDF = QtWidgets.QPushButton("Display DF", self)
        hLayout.addWidget(self.dislayDF)
        vLayout.addLayout(hLayout)
        self.dislayDF.clicked.connect(self.print_df_values)



    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)
        return df

    def print_df_values(self,df):
        print(self.df)

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

Tags: csvselfdfdefwidgetprintqtwidgetsvlayout
1条回答
网友
1楼 · 发布于 2024-09-27 23:28:51

这里self.dislayDF.clicked.connect(self.print_df_values)您将一个槽定向到一个具有参数的函数,该参数是一个数据帧,但您没有向它传递任何参数。由于您的类正在扩展QtWidgets,而df不是任何widget,因此出现此错误。 尝试将其定向到loadFile函数

相关问题 更多 >

    热门问题