Seite 1 von 1

Prozess beenden, Fenster offen lassen

Verfasst: Sonntag 3. Juli 2016, 21:38
von TengTeng
Moin Moin,

ich habe folgendes Problem:

Ich habe ein Programm mit einer GUI. Mit einem Button kann man nun einen Prozess starten.
Wenn allerdings eine Eingabe fehlt gibt es eine Fehlermeldung (meinerseits). Jetzt sollte der Prozess abgebrochen werden, die Gui aber bleiben und so zu sagen auf einen neuen start warten... Mir ist das in der IDLE mit

Code: Alles auswählen

sys.exit()
gelungen. In eclipse (PyDev) schließt sich dann aber das ganze Fenster.
Bei identischem Code :(
Was ist da jetzt anders?

Ich hoffe ihr könnt mir helfen
Mit vielen Grüßen
TengTeng

PS: In eclipse benutzte ich soweit ich weis den Standartinterpreter

Re: Prozess beenden, Fenster offen lassen

Verfasst: Sonntag 3. Juli 2016, 22:11
von Sirius3
@TengTeng: IDLE verhält sich in vielen Dingen nicht so wie ein normales Python. sys.exit beendet das Programm. Was Du statt dessen willst, habe ich aus Deiner Beschreibung noch nicht verstanden.

Re: Prozess beenden, Fenster offen lassen

Verfasst: Sonntag 3. Juli 2016, 22:26
von TengTeng
Ok, danke erstmal für die schnelle Antwort.

Ich habe dieses Gui-program, was die ganze zeit laufen soll...
Nun kann man über "Start" bestimmte Eingaben abprüfen.
Wenn aber nun eine oder mehrere Eingaben fehlen gibt das Program eine Fehlermeldung zurück.
Und die Abfrage der Eingaben soll gestoppt werden.
Nun soll das Fenster offen bleiben und warten bis das man von neuem "Strart" drück und alles von neuem Abfragen.


Ich hoffe mein Problem ist nun etwas verständlicher

MVG
TengTeng

Re: Prozess beenden, Fenster offen lassen

Verfasst: Sonntag 3. Juli 2016, 22:34
von Sirius3
@TengTeng: mit »Fehlermeldung zutückgeben« wird doch die Abfrage schon gestoppt. Für was ist dann das »sys.exit« gut?

Re: Prozess beenden, Fenster offen lassen

Verfasst: Sonntag 3. Juli 2016, 22:41
von TengTeng
Das ist ja das Problem, die Fehlermeldung gibt leidlich zurück das etwas fehlt und gibt dann an eine Funktion ab, die das dann beenden soll. Aber halt nicht das Fenster schließt.

Ein Beispiel:

Code: Alles auswählen

def brot():

    if v_b.get() == 1:
        v_brotart = "Klassikbrot"
    elif v_b.get() == 2:   
        v_brotart = "Anderes"
    else:
        t_ausgabe.insert("end","Fehler: Brotart wählen\n", "r")
        error_end()
        
    t_ausgabe.insert("end", v_brotart + " wird getoastest")
    pg.step(20)

def error_end():
    t_ausgabe.see("end")
    pg.stop()
    sys.exit()
Und das klappt mit sys.exit() nicht, weil sich das das ganze Fenster schließt....

Re: Prozess beenden, Fenster offen lassen

Verfasst: Montag 4. Juli 2016, 06:57
von Sirius3
@TengTeng: ich verstehe immer noch nicht ganz, wo das Problem liegt, das Du mit sys.exit zu lösen versuchst. Es gibt nämlich keins.

PS: das Voranstellen von willkürlichen Buchstaben vor Variablennamen solltest Du sein lassen. Heißt 'v_' wirklich Variable? Statt dessen solltest Du Dir aussagekräftige Namen aussuchen (b?) Funktionen werden nach einer Tätigkeit benannt, z.B: start_toasting.

Re: Prozess beenden, Fenster offen lassen

Verfasst: Montag 4. Juli 2016, 23:12
von BlackJack
@TengTeng: Also ich würde das Objekt das die Geschäftslogik kapselt im Fehlerfall einfach verwerfen und ein neues erstellen um damit den Vorgang wieder am Anfang zu starten. Eventuell muss man in den entsprechenden GUI-Objekten dann eine Re-Initialisierung vorsehen, oder eben auch die entsprechenden GUI-Elemente oder gar Fenster verwerfen und neu erzeugen. Dazu müsstest Du dann von diesen ”Funktionen” weg die keine sind, und auch von den globalen Variablen.