我有一个python脚本,它使用pyqt5在TableView中显示所选择的数据帧
我有两个功能:
系统显示以下错误:
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_())
这里
self.dislayDF.clicked.connect(self.print_df_values)
您将一个槽定向到一个具有参数的函数,该参数是一个数据帧,但您没有向它传递任何参数。由于您的类正在扩展QtWidgets,而df不是任何widget,因此出现此错误。 尝试将其定向到loadFile函数相关问题 更多 >
编程相关推荐