Mein Problem:
Ich möchte einen Wert aus der (def openCSV) in die (def saveItem) übernehmen.
Ich möchte den Wert der Liste filename in die Function saveItem übergeben damit ich diesen Wert nicht nochmalls abfragen muss .
Die Funktion openCSV & saveItem befinden sich in der selben Klasse -> Class MainWindow()
(filename = l[0])
Was soll dieses Script erledigen?
-Ein Fenster öffnet sich. (Erstellt mit QT Creator)
-User kann eine .txt oder .csv Datei anwählen
-Pfad wird in der liste l abgespeichert
-Liste l wird formatiert und in der Variable filename = abgespeichert.
-Liste wird in einer Tabelle eingefügt damit sie bearbeitet werden kann.
-User gibt seine Daten ein.
-User speichert seine Daten über einen PushButton. Ohne den Pfad wieder angeben zu müssen. (Siehe: Mein Problem)
Die Veerbung zwischen zwei Classen funktioniert ja durch den aufruf von super()."".
Wie ist das möglich wen ich die Veerbung zwischen 2 Fuktionen machen will?
Wie man am folgenden Code sehen kann bin ich noch ein Anfänger in der Programmiersprache.
Dieses "Programm" dient nur zur Übung.
Code: Alles auswählen
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent = None):
super().__init__(parent)
self.setWindowTitle("To Do Liste")
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.addPB.clicked.connect(self.onPushButtonClick)
self.ui.savePB.clicked.connect(self.saveItem)
self.openCSV()
def onPushButtonClick(self):
self.ui.tableWidget.insertRow(-0)
self.ui.tableWidget.setItem(0, 0, QtWidgets.QTableWidgetItem(""))
self.ui.tableWidget.setItem(0, 1, QtWidgets.QTableWidgetItem(""))
self.ui.tableWidget.setItem(0, 2, QtWidgets.QTableWidgetItem(""))
def openCSV(self):
l = []
file = QFileDialog.getOpenFileName(self, "Open File","/home")
for i in file:
l.append(i)
filename = l[0] #Diese Variable soll Veerbert werden
with open(filename, "r", newline='', encoding="utf-8") as file:
reader = csv.reader(file, delimiter=' ', quotechar='"')
for i in reader:
if i != "":
self.ui.tableWidget.insertRow(-0)
name = i[0]
nachname = i[1]
alter = i[2]
self.ui.tableWidget.setItem(0, 0, QtWidgets.QTableWidgetItem(name))
self.ui.tableWidget.setItem(0, 1, QtWidgets.QTableWidgetItem(nachname))
self.ui.tableWidget.setItem(0, 2, QtWidgets.QTableWidgetItem(alter))
else:
break
def saveItem(self):
with open(filename, 'w', newline='', encoding="utf-8") as file:
writer = csv.writer(file, delimiter=' ', quotechar='"')
rows = self.ui.tableWidget.rowCount()
for i in range(0, rows):
rowContent = [
self.ui.tableWidget.item(i, 0).text(),
self.ui.tableWidget.item(i, 1).text(),
self.ui.tableWidget.item(i, 2).text(),
]
writer.writerow(rowContent)
Micro