PyQT QTableWidget extrem langsam

dies ist der Code, mit dem ich eine in QT Designer gezeichnete Tabelle fülle. Entwickelt, um universell für jede Tabelle zu sein, funktioniert es einwandfrei, aber ... Wenn ich versuche, ein Datasat mit 18 Spalten und ~ 12000 Zeilen anzuzeigen, friert es nur 30 Sekunden oder länger ein. Also, was mache ich falsch und gibt es einen Weg, um zu beschleunigen und den Code für jeden Tisch geeignet zu halten?

Das ist mein Code:

...blablabla...

self.connect(self, SIGNAL("set"), self.real_set)

...blablabla...

def set_table(self, table, data):
    self.emit(SIGNAL('set'), table, data)

def real_set(self, table, data):
    """
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    Assuming data is list of dict and table is a QTableWidget.

    Get first key and get len of contents
    """
    for key in data:
        rows = len(data[key])
        table.setRowCount(rows)
        break

    """
    Forbid resizing(speeds up)
    """
    table.horizontalHeader().setResizeMode(QHeaderView.Fixed)
    table.verticalHeader().setResizeMode(QHeaderView.Fixed)
    table.horizontalHeader().setStretchLastSection(False)
    table.verticalHeader().setStretchLastSection(False)

    """
    Set number of columns too
    """
    table.setColumnCount(len(data))
    table.setHorizontalHeaderLabels(sorted(data.keys()))

    """
    Now fill data
    """
    for n, key in enumerate(sorted(data.keys())):
        for m, item in enumerate(data[key]):
            newitem = QTableWidgetItem(item)
            table.setItem(m, n, newitem)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage