Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws2122:asciia:abbruch.py:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws2122:asciia:abbruch.py:start [2022/03/16 15:00]
MoscarTU
ws2122:asciia:abbruch.py:start [2022/03/26 16:25] (aktuell)
MoscarTU
Zeile 1: Zeile 1:
 ===== Abbruch.py: ===== ===== Abbruch.py: =====
-Diese Datei beinhaltet Funktionen, die das Programm korrekt beenden, falls STRG+C gedrückt wurde. Dabei war es uns wichtig, dass die Bilder, welche temporär gespeichert ​werden ​zu löschen, damit diese nicht die Festplatte ​vollmüllen.+Diese Datei beinhaltet Funktionen, die das Programm korrekt beenden, falls STRG + C gedrückt wurde. Dabei war es uns wichtig, dass die temporär gespeicherten ​Bilder ​gelöscht ​werden, damit diese keinen Platz auf der Festplatte ​mehr verbrauchen.
 <code python> <code python>
 import shutil import shutil
Zeile 9: Zeile 9:
 from colorama import Fore, Back, Style from colorama import Fore, Back, Style
 import readchar # muss extra installiert werden mit: pip install readchar import readchar # muss extra installiert werden mit: pip install readchar
-<​code>​+import AsciiBildConverter as abc
  
 +</​code>​
 +Diese Bibliotheken werden für Abbruch.py extra importiert.
 <code python> <code python>
  
Zeile 16: Zeile 18:
 thread_kill = False thread_kill = False
  
-def AbbruchFarbeZuweisung (farbe1, farbe2): ​# Übergabe der eingegebenen Farben (für globale Variable)+# Übergabe der eingegebenen Farben (für globale Variable) 
 +def AbbruchFarbeZuweisung (farbe1, farbe2): ​
     global abbruchHinFarbe     global abbruchHinFarbe
     global abbruchVorFarbe     global abbruchVorFarbe
     abbruchHinFarbe = farbe1     abbruchHinFarbe = farbe1
     abbruchVorFarbe = farbe2     abbruchVorFarbe = farbe2
 +
 +</​code>​
 +Die Funktion "​AbbruchFarbeZuweisung"​ speichert nur die Farben (für Zeichen und Hintergrund) global ab, damit in der Funktion Abbruch auf die Farbeingabe von der Hauptdatei ASCII-Animation zugegriffen werden kann.
 +<code python>
  
 def Abbruch(signum,​ frame): def Abbruch(signum,​ frame):
Zeile 29: Zeile 36:
     text = "​\nSTRG-C wurde gedrückt. Willst du wirklich abbrechen? Drücke j/n (für Ja/​Nein)."​     text = "​\nSTRG-C wurde gedrückt. Willst du wirklich abbrechen? Drücke j/n (für Ja/​Nein)."​
     print(Back.BLACK + Fore.RED + text, flush=True)     print(Back.BLACK + Fore.RED + text, flush=True)
 +    time.sleep(0.2)
     antwort = readchar.readkey().lower()     antwort = readchar.readkey().lower()
     if antwort == '​j':​     if antwort == '​j':​
         thread_kill = True         thread_kill = True
 +        abc.BildFreigeben()
         time.sleep(0.1)         time.sleep(0.1)
         print(""​)         print(""​)
-        if os.path.exists('​Bildercache'​): ​# Fehlerabfang,​ falls der Ordner noch nicht erstellt wurde +        ​# Fehlerabfang,​ falls der Ordner noch nicht erstellt wurde 
-            shutil.rmtree('​Bildercache'​) # Löscht kompletten Ordner ​(ganz am Ende soll das hin)+        ​if os.path.exists('​Bildercache'​):​ 
 +            shutil.rmtree('​Bildercache'​) # Löscht kompletten Ordner 
         print(Style.RESET_ALL)         print(Style.RESET_ALL)
         exit(1)         exit(1)
     else:     else:
         thread_Pause = False         thread_Pause = False
-        ​try: # Fehlerabfang,​ falls am Anfang STRG+C gedrückt wird +        # Fehlerabfang,​ falls am Anfang ​(vor Farbauswahl) ​STRG+C gedrückt wird 
-            print(getattr(Fore,​ abbruchHinFarbe) + getattr(Back,​ abbruchVorFarbe),​ end="​\r"​) # für Hintergrundfarbe und Zeichenfarbe+        try: 
 +            print(getattr(Fore,​ abbruchHinFarbe) + getattr(Back,​ abbruchVorFarbe),​ end="​\r"​) # für Hintergrundfarbe und Zeichenfarbe, print(Style.RESET_ALL) für Reset
         except Exception:         except Exception:
             print(Style.RESET_ALL)             print(Style.RESET_ALL)
-        ​print("",​ end="​\r",​ flush=True) # Flush fixt ein Problem mit sleep (evtl. kann hier auch weg oder noch an andere Stellen des Programms hinzufügen)+ 
 +        ​print("",​ end="​\r",​ flush=True) # Flush fixt ein Problem mit sleep
         print("​ " * len(text), end="",​ flush=True) # Löscht gedruckte Zeile         print("​ " * len(text), end="",​ flush=True) # Löscht gedruckte Zeile
         print(" ​   ", end="​\r",​ flush=True)         print(" ​   ", end="​\r",​ flush=True)
 +
 +</​code>​
 +Die Methode "​Abbruch"​ ist der Hauptbestandteil der Datei. Am Anfang werden die Variablen thread_Pause und thread_kill global und thread_Pause zu True. Dadurch wird der Thread pausiert, also es werden keine weiteren Bilder aus dem Video erstmal gespeichert (siehe ASCII-Animation-Datei).
 +Durch eine Nachricht wird der Benutzer aufgefordert "​j"​ oder "​n"​ zu drücken, die Farbe der Nachricht durfte nicht unbedingt so wie die Farbauswahl sein, da sie evtl. nicht sichtbar wäre. ​
 +Bei "​j"​ wird der Thread gekillt und danach kommt eine wichtige sleep-Pause. Abschließend wird der Bildercache gelöscht.
 +Falls nicht abgebrochen werden soll, wird wieder die Farbe (für die Zeichen und den Hintergrund) wiederhergestellt. Dabei müssen die Variablen mit "​getattr"​ von char/String in ein Attribut umgewandelt werden.
 +<code python>
  
 def Abbruchsignal():​ def Abbruchsignal():​
     signal.signal(signal.SIGINT,​ Abbruch)     signal.signal(signal.SIGINT,​ Abbruch)
 </​code>​ </​code>​
 +
 +Die Funktion fängt STRG+C ab.
ws2122/asciia/abbruch.py/start.1647439248.txt.gz · Zuletzt geändert: 2022/03/16 15:00 von MoscarTU