ProgressBar wieder zurücksetzen?

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
machupicchu
User
Beiträge: 61
Registriert: Samstag 1. Juni 2013, 14:04

Hi,

ich möchte QProgressBar zurücksetzen.

Code: Alles auswählen

    def openFile(self):
        fileOpen, filter = QFileDialog.getOpenFileName(self, 'file', '/home')
        with open(fileOpen, 'r') as fileRead:
            data = fileRead.read()
            self.text_edit.setText(data)
        self.progress_Bar.setValue(100)         <---------------------Wird auf 100 gesetzt
        self.status_Bar.showMessage('Ready', timeout=5000)
        self.progress_bar.setValue(0)             <---------------------Wieder auf Null setzen
Setze den Wert nach meinem request gleich auf 100. Möchte anschließend danach den Wert wieder auf Null setzen, da es auf meiner GUI unschön aussieht. Mit der Methode reset() oder einen anderen Methode hatte ich es auch vergeblich versucht.

Hat jemand noch eine andere Idee wie ich den Wert wieder auf Null setzen kann.
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Könntest du mal erläutern, was du hier mit dem progressbar anzeigen willst?
Wenn es nur um das Laden einer lokalen Datei geht ist das imho das falsche Mittel, hier reicht doch eine Anzeige im Statusbar oder von mir aus ein kleiner Dialog, ob das Laden erfolgreich war oder nicht.
Benutzeravatar
machupicchu
User
Beiträge: 61
Registriert: Samstag 1. Juni 2013, 14:04

Das ist eigentlich wurscht was ich da lade. Will es nur zurücksetzen. In dem Beispiel geht es um eine Filedatei.
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Was genau geht denn jetzt nicht bzw. was ist "unschön"?
reset ist hier die Methode zum Zurücksetzen, ansonsten habe ich nicht verstanden, was dein Problem ist.
Benutzeravatar
machupicchu
User
Beiträge: 61
Registriert: Samstag 1. Juni 2013, 14:04

Das Problem ist folgendes:

Mein ProgressBar ist auf 100, d.h. der load Balken ist voll (grün).

Jetzt möchte ich diesen wieder auf 0 setzen,so, dass mein load Balken leer ist. Also nicht mehr grün.
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Dann zeig bitte mal ein Minimalbeispiel, dass das Problem reproduziert. In deinem Beispiel-Code sollte der Progressbar am Ende wieder den Wert 0 haben.
Benutzeravatar
machupicchu
User
Beiträge: 61
Registriert: Samstag 1. Juni 2013, 14:04

ProgressBar ist in dem Beispiel auf 100 gesetzt:

Code: Alles auswählen

 def openFile(self):
        fileOpen, filter = QFileDialog.getOpenFileName(self, 'file', '/home')
        with open(fileOpen, 'r') as fileRead:
            data = fileRead.read()
            self.text_edit.setText(data)
        self.progress_Bar.setValue(100)         <---------------------Wird auf 100 gesetzt
        self.status_Bar.showMessage('Ready', timeout=5000)
Möchte nun diesen wieder auf 0 setzen und hatte folgende Codezeile am Ende hinzugefügt, aber dann ist mein ProgressBar immer auf 0. Oder es geht so schnell, dass ich es nicht sehe :-O

Code: Alles auswählen

self.progress_Bar.setValue(0)

Code: Alles auswählen

 def openFile(self):
        fileOpen, filter = QFileDialog.getOpenFileName(self, 'file', '/home')
        with open(fileOpen, 'r') as fileRead:
            data = fileRead.read()
            self.text_edit.setText(data)
        self.progress_Bar.setValue(100)         <---------------------Wird auf 100 gesetzt
        self.status_Bar.showMessage('Ready', timeout=5000)
        self.progress_Bar.setValue(0)
Weiß nicht was ich da noch erklären soll?
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

machupicchu hat geschrieben: ... Oder es geht so schnell, dass ich es nicht sehe :-O
Jepp, deswegen mein erster Kommentar.
Benutzeravatar
machupicchu
User
Beiträge: 61
Registriert: Samstag 1. Juni 2013, 14:04

Ok, kann man iwie ne pause dazwischen einbauen?
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Ja, kann man (Stichwort Timer in Qt -> QTimer), aber ein Progressbar ist dazu da einen längeren Prozess zu visualisieren und hier beim Öffnen einer lokalen Datei unangebracht, da du ja dem Benutzer vorgaukelst, dass der Prozess wesentlich länger dauert als in Wirklichkeit. Das würde ich an deiner Stelle nochmal überdenken.
Benutzeravatar
machupicchu
User
Beiträge: 61
Registriert: Samstag 1. Juni 2013, 14:04

Ja hast schon recht! Bin noch am überlegen wie ich das mit dem Progress machen kann, da ja viele Faktoeren eine Rolle spielen. Dachte vorerst an Euklid Algorithm. Wollte die Menge des Textes auslesen und dann eben

Code: Alles auswählen

 text_menge = [x**2  for x in text_menge, if x % 2 not 0]
und anschließend die Variable an mein progress übergeben. Ist eben nur ein beispiel, aber für vorschläge bin ich offen.
Antworten