Verzögerte Textausgabe im QTextBrowser

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

Donnerstag 12. April 2018, 09:33

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: 7905
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 12. April 2018, 09:41

@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: 67
Registriert: Freitag 3. Juni 2016, 05:45

Donnerstag 12. April 2018, 09:44

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

Donnerstag 12. April 2018, 10:48

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: 67
Registriert: Freitag 3. Juni 2016, 05:45

Montag 16. April 2018, 15:40

Vielen Dank, werde es mal versuchen.
Antworten