QTextEdit Datenmenge zu groß?

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
FrankM
User
Beiträge: 26
Registriert: Dienstag 20. Juli 2021, 08:51

Guten Morgen zusammen,

da Ihr mir bei meinem ersten Problem schnell helfen konntet, meine Denkblockade zu lösen, versuche ich es heute noch mit einem anderen Problem.

Aufgabenstellung
Ich lagere einen Prozess mit subprocess.run aus, erwarte das Ergebnis und gebe das in einem QTextEdit aus.

Code: Alles auswählen

# Hier checken wir die Daten.
            result = subprocess.run(['restic',
                                    '-r',
                                    backup_data[row].repository,
                                    'init'],
                                    input = backup_data[row].password,
                                    check=False,
                                    capture_output=True,
                                    text=True)
Problem
Ich bekomme große(?) Mengen an Daten zurück. Das sieht dann so aus.

Code: Alles auswählen

/home/frank/restic_window_test/venv/share/python-wheels/progress-1.5-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/pyparsing-2.4.6-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/requests-2.22.0-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/setuptools-44.0.0-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/six-1.14.0-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/toml-0.10.0-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/urllib3-1.25.8-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/webencodings-0.5.1-py2.py3-none-any.whl
/home/frank/restic_window_test/venv/share/python-wheels/wheel-0.34.2-py2.py3-none-any.whl
/home/frank/Öffentlich

Länge 111387418
Die Dateiliste ist 111387418 Zeichen lang. Wenn ich die jetzt ungekürzt in mein Widget ausgebe, wird das Python Programm total laggy. Ich muss den Prozeß dann über die Konsole beenden, weil nicht mehr benutzbar.
Im Moment behelfe ich mir mit

Code: Alles auswählen

mainWin.widget.setPlainText(output[0:1000000])
Das ist natürlich nicht so wirklich schön. Mein Recherche im Netz ergab, das QTextEdit sehr große Datenmengen aufnehmen kann. Und jetzt mein Kopfproblem, ich verstehe nicht warum dieses Problem auftaucht!?
Jemand einen Tipp für mich?

Eine bessere Thread Überschrift ist mir leider nicht eingefallen.
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sind 100 Megabyte. Das ist offensichtlich zu viel. Wenn du sowas darstellen willst, dann solltest du nach einem Widget suchen, welches nicht bearbeiten kann. So wie ein less Kommando unter Linux eben auch kein Editor darstellt. Das ermöglicht massive Optimierung. Ob es da schon fertig was gibt, oder du selbst ran musst, weiß ich aus der lameng auch nicht.
FrankM
User
Beiträge: 26
Registriert: Dienstag 20. Juli 2021, 08:51

Danke. Ich habe da schon eine Idee, wie ich das umbauen könnte.
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nachtrag: minimal solltest du zu https://doc.qt.io/qt-5/qplaintextedit.html#details wechseln.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1011
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Eine Tabelle mit 250_000 Einträgen und zwei Spalten läuft sehr flüssig. Nur der Speicherverbrauch ist extrem. Ich komme dann auf ca. 500 MiB Speicherverbrauch.

Probier mal das QTableWidget aus.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
FrankM
User
Beiträge: 26
Registriert: Dienstag 20. Juli 2021, 08:51

QPlainTextEdit scheint die Lösung zu sein. Ein kurzer Test sieht erfolgversprechend aus. Leider funktionieren jetzt einige andere Dinge nicht mehr, die baue ich mal eben um ;)
Ich melde mich noch mal zurück, wenn alles geklappt hat. Danke bis hier hin...
FrankM
User
Beiträge: 26
Registriert: Dienstag 20. Juli 2021, 08:51

@__deets__: Danke für den Tipp. Funktioniert jetzt wie gewünscht :wink:

Ich hatte mal auf QTextEdit umgebaut um dort HTML Code ausgeben zu können. Wollte das der Text etwas besser aussieht..
Leider nicht dran gedacht, das das andere Nachteile haben könnte. Wie gesagt, bin noch recht ungeübt und weiß auch nicht alles, vieles angelesen.
Aber sehr positiv, wenn mir hier im Forum so toll geholfen wird.

@Dead_Exe: Ich schau mir das QTableWidget auch noch an.
Antworten