Python Funktion zurücksetzen

Fragen zu Tkinter.
Antworten
fatalschakal
User
Beiträge: 1
Registriert: Sonntag 13. Januar 2019, 13:15

Guten Tag, habe ein kleines Programm geschrieben. Das ganze wird in einem GUI dargestellt.

Zuerst soll Aufforderung "Grundstellung nach Störung" da stehen. Nach betätigung des Buttons soll für 5 Sekunden lang "Grundstellungsfahrt in 5 Sekunden beendet" da stehen. Danach folgt die Meldung "Grundstellungsfahrt abgeschlossen, bereit für Automatik". Nach 2 Sekunden soll Aufforderung "Nach Fehlermeldung Grundstellungsfahrt" erscheinen. Also die Aufforderung die am Anfang da steht.

Hier mal ein Schema:
1. Aufforderung "Grundstellung nach Fehler fahren" 2. Meldung "Grundstellung nach 5 Sek beendet" 3. time.sleep(5) 4."Grundstellungsfahrt beendet. Automatik bereit" 5. Automatisch Aufforderung (1.) "Grundstellung nach Fehler fahren" erscheinen.

Habe ein Video aufgenommen, so wie der aktuelle Stand ist:

https://www.youtube.com/watch?time_cont ... HkkW_bM-P0

Hier der Code:

from tkinter import *
import time

#Funktionen:
#Button 1 startet Grundstellungsfahrt
def button_action():
anweisung_label.config(text="Grundstellungsfahrt startet, in 5 Sekunden beendet!", background='light blue')
time.sleep(5)
anweisung_label.config(text="Grundstellungsfahrt beendet! Automatikbetrieb möglich!", background='light blue')
time.sleep(2)
#Fenster erstellen
fenster = Tk()
#Fenstertitel
fenster.title("Dübelmaschine")

#Fenstergröße
fenster.geometry("320x240")

#Hintergrundfarbe
fenster.configure(background='light blue')

#Labels/Buttons erstellen:
change_button = Button(fenster, text="Grundstellung", command=button_action)

anweisung_label = Label(fenster, text="Nach Störung Grundstellung anfahren", background='light blue')

#Komponenten Fenster hinzufügen
anweisung_label.pack()
change_button.pack()

#Ereignissschleife warten auf Benutzereingabe
fenster.mainloop()


Ich bedanke mich schonmal im Vorraus für alle hilfreichen Kommentare!
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mit time.sleep kannst du nicht arbeiten. Das wird hier im Forum gefuehlt jeden Tag fuenfmal diskutiert. Ungefuehlt ungefaehr einmal am Tag. Was du brauchst ist die Methode "after" in tkinter, mit der du einen timer starten kannst, und dann nach dessen ablauf benachrichtig wirst. Denn in GUIs kann und muss man immer nur kurz auf Ereignisse reagiern. Maus, Tastatur, generell IO und eben Timer.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@fatalschakal: Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Und Funktionen/Methoden sollten alles was sie ausser Konstanten benötigen als Argumente übergeben bekommen und nicht auf magische Weise irgendwo aus der Umgebung. Wenn man das beides zusammen nimmt, ergibt sich fast zwangsläufig, dass man für GUI-Programmierung objektorientierte Programmierung (OOP) braucht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten