Seite 1 von 1

QTableWidget - Zeilen Löschen

Verfasst: Montag 12. August 2019, 10:39
von NewPython19
Hallo,
ich habe eine QTableWidget die ich während meines Programms befülle.
Durch Betätigen eines QPushButtons möchte ich alle Zeilen löschen.
Mit der Funktion ".clear()" löscht sich bei mir alles, auch die Spaltennamen.
Daher habe ich über eine for-schleife probiert die Zeilen zu löschen:

Code: Alles auswählen

	rows = self.table.rowCount()
	for i in range(rows)
		self.table.remotRow(i)
Allerdings bleibt bei mir immer eine Zeile ungelöscht. Weiß jemand warum und wie man das beheben kann?

Grüße

Re: QTableWidget - Zeilen Löschen

Verfasst: Montag 12. August 2019, 11:12
von sparrow
Ich bin mir ziemlich sicher, dass der Code gar keine Zeilen löscht.
Und wenn du den zeigst, den du tatsächlich ausführst, schaut sich den sicher auch jemand an.

Re: QTableWidget - Zeilen Löschen

Verfasst: Montag 12. August 2019, 12:17
von NewPython19
Sorry da war ein Tippfehler drin aber ansonsten ist das mein Code:

Code: Alles auswählen

rows = self.table.rowCount()
	for i in range(rows)
		self.table.removeRow(i)

Re: QTableWidget - Zeilen Löschen

Verfasst: Mittwoch 18. September 2019, 10:24
von Fesker
Hallo,
Du musst von hinten anfangen und nach vorne löschen, sonst gehts nicht.

Code: Alles auswählen

def removeRows():
    for row in range(self.tableWidget.rowCount(), 0, -1):
        print('Lösche %d' % (row - 1))
        self.tableWidget.removeRow(row - 1)

Re: QTableWidget - Zeilen Löschen

Verfasst: Mittwoch 18. September 2019, 19:07
von Sirius3
Warum ziehst Du immer 1 von `row` ab, statt gleich den richtigen Range abzulaufen?

Code: Alles auswählen

def removeRows():
    for row in range(self.tableWidget.rowCount() - 1, -1, -1):
        print('Lösche %d' % row)
        self.tableWidget.removeRow(row)
Das ist aber immer noch schwierig zu verstehen, so dass es einfacher ist, `reversed` zu benutzen:

Code: Alles auswählen

def removeRows():
    for row in reversed(range(self.tableWidget.rowCount())):
        print('Lösche %d' % row)
        self.tableWidget.removeRow(row)