Ich habe ein Problem mit der Linie unter self.tableView.set??????????(df)
, die den Datenrahmen in PyQt5 anzeigen sollte. Ich legte ??? Dort wo ich den Code vermisse, den ich brauche.Wie man einen Pandas-Datenrahmen mit PyQt5 anzeigt
def btn_clk(self):
path = self.lineEdit.text()
df = pd.read_csv(path)
self.tableView.set??????????(df)
Der Rest des Codes arbeitet, denn wenn ich print(df)
in dem obigen Code verwenden, wird der Datenrahmen in der Konsole IPython gedruckt. Pandas liest die CSV und druckt sie.
Aber ich habe viele Dinge versucht, um es in PyQt5 angezeigt und nichts funktioniert. Ich bin mit PyQt nicht sehr vertraut, habe einfach angefangen, damit herumzuspielen, und ich stecke hier fest.
Hier ist mein Code:
from PyQt5 import QtCore, QtGui, QtWidgets
import pandas as pd
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(662, 512)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
self.horizontalLayout.setObjectName("horizontalLayout")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit)
self.tableView = QtWidgets.QTableView(self.centralwidget)
self.tableView.setObjectName("tableView")
self.verticalLayout.addWidget(self.tableView)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setObjectName("pushButton")
self.verticalLayout.addWidget(self.pushButton)
self.horizontalLayout.addLayout(self.verticalLayout)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 662, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.pushButton.clicked.connect(self.btn_clk)
MainWindow.show()
def btn_clk(self):
path = self.lineEdit.text()
df = pd.read_csv(path)
self.tableView.set????????????(df)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Dank dieser so viel zu tun. Soll ich 'PandasModel' in meinen ursprünglichen Code mit' from PandasModel import PandasModel' importieren? Ich versuche, alles zusammenzusetzen, aber es funktioniert noch nicht. Wenn ich versuche, 'PandasModel' zu importieren, bekomme ich den Fehler 'kein Modul namens PandasModel'. Ich bin mir sicher, dass ich etwas vermisse. Kannst du mir bitte in die richtige Richtung zeigen? –
Aktualisieren Sie meine Antwort, indem Sie den Code hinzufügen, wie Sie es verwenden sollten – eyllanesc
Wow! Das ist wirklich großartig! Vielen Dank dafür. Es ist eine große Hilfe. Es funktioniert perfekt. –