Wie kann ich ein Label nach einer bestimmten Zeit ändern?

Fragen zu Tkinter.
Antworten
Col.Mars
User
Beiträge: 6
Registriert: Mittwoch 7. März 2018, 10:26

Mittwoch 7. März 2018, 10:35

Hi ich schreibe gerade ein Programm in dem das Ergebnis einer Datenbank Abfrage in 3 Variablen gespeichert und dann von 3 Labels ausgegeben wird.
Da die Abfrage einen Geld Betrag sowie vor und Nachname anzeigt, sollte dies nicht länger als wenige Sekunden zu sehen sein.

Code: Alles auswählen

        result = cursor.fetchall()
        for data in result:
            vorname = str(data[1])
            name = str(data[2])
            guthaben = float(data[3])
            L_Name.config(text=name)
            L_Vorname.config(text=vorname)
            L_Guthaben.config(text=guthaben)
        cursor.close()
        time.sleep(3)
        L_Name.config(text="")
        L_Vorname.config(text=""
        L_Guthaben.config(text="")
Leider funktioniert das so nicht :/
Sirius3
User
Beiträge: 7782
Registriert: Sonntag 21. Oktober 2012, 17:20

Mittwoch 7. März 2018, 11:02

@Col.Mars: da GUIs ereignisbasiert arbeiten, darf eine Funktion nicht längere Zeit brauchen, verboten sind also `sleep`, Endlosschleifen, etc. Lösung ist mit `after` nach einer bestimmten Zeit eine weitere Funktion aufzurufen.

Wenn eine SQL-Abfrage exakt ein Ergebnis liefert, sollte man keine Schleife sondern `fetchone` verwenden. Statt bei Labels die text-Eigenschaft zu setzen, benutze `StringVar`. `vorname` und `name` sollten schon Strings sein, das guthaben sollte mit `format` entsprechend der Nachkommastellenanzahl formatiert werden. Den SQL-Ausdruck hast Du nicht gezeigt, dort sollte aber die Namen der Felder explizit angegeben werden. Statt `data` kann man dann gleich Tupleunpacking benutzen.
Antworten