Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ws2122:asciia:abbruch.py:start [2022/03/16 19:01] 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 | ||
+ | import AsciiBildConverter as abc | ||
</code> | </code> | ||
Zeile 17: | 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 | ||
Zeile 34: | 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 | 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 | ||
Zeile 54: | Zeile 62: | ||
</code> | </code> | ||
- | Die Funktion "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). | + | 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. | 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. | Bei "j" wird der Thread gekillt und danach kommt eine wichtige sleep-Pause. Abschließend wird der Bildercache gelöscht. |