Verzögerte Textausgabe im QTextBrowser

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Hallo,

ich versuche gerade eine Art Programmablauf innerhalb einer Methode im QTextBrowser durch unterschiedliche Textausgaben darzustellen.
Leider wird der Text erst in den Text Browser geschrieben, wenn die Methode durchlaufen ist.
Um ein bisschen Verzögerung zu erzielen habe ich einfach eine Schleife eingefügt.

Was mache ich dort falsch?
Die print-Ausgabe in der Konsole jedoch funktioniert wie sie soll.

Hier einmal die Methode:

Code: Alles auswählen

def find_paths(self):
    self.textBrowser_Progress.append('test')
    print("test")


    for i in range(0,10000):
        self.textBrowser_Progress.append(str(i))
        
    self.textBrowser_Progress.append("finished")
    print("finisihed")
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Patrick1990: bei GUIs muß sich das Programm (fast immer) in der Event-Schleife befinden, damit es die Nutzerinteraktion durchführen kann. Daher verbieten sich langdauernde Schleifen. Lösung ist, einen Timer zu benutzen.
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Danke für die super schnelle Antwort.
Wie würde ich in diesem Fall mit einem Timer Besserung erzielen?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst ein QTimer-Objekt erzeugen, dessen timout Signal mit einem Slot deiner Wahl verbinden, und in diesem Slot zaehlst du deine Variable hoch. QTimer sind wirklich gut dokumentiert:

http://doc.qt.io/qt-5/qtimer.html
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Vielen Dank, werde es mal versuchen.
Antworten