Dies ist eine alte Version des Dokuments!
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.
import shutil import os import signal import colorama import time from colorama import Fore, Back, Style # Diese und folgende Zeile für Farbänderung import readchar # muss extra installiert werden mit: pip install readchar thread_Pause = False thread_kill = False def AbbruchFarbeZuweisung (farbe1, farbe2): # Übergabe der eingegebenen Farben (für globale Variable) global abbruchHinFarbe global abbruchVorFarbe abbruchHinFarbe = farbe1 abbruchVorFarbe = farbe2 def Abbruch(signum, frame): global thread_Pause global thread_kill #print(Style.RESET_ALL) thread_Pause = True time.sleep(0.2) # _ = system("cls") # nur Bildschirm clearen, wenn der Bug zu häufig auftritt text = "\nSTRG-C wurde gedrückt. Willst du wirklich abbrechen? Drücke j/n (für Ja/Nein)." #Gib j/n (für Ja/Nein) ein. -> wenn ohne readchar print(Back.BLACK + Fore.RED + text, flush=True) #antwort = input().lower() antwort = readchar.readkey().lower() if antwort == 'j': thread_kill = True # extra Thread sollte vor Programmende gekillt werden, da sonst die Anaconda verbuggt ist (manchmal) time.sleep(0.1) print("") if os.path.exists('Bildercache'): # Fehlerabfang, falls der Ordner noch nicht erstellt wurde shutil.rmtree('Bildercache') # Löscht kompletten Ordner (ganz am Ende soll das hin) print(Style.RESET_ALL) exit(1) else: thread_Pause = False try: # Fehlerabfang, falls am Anfang STRG+C gedrückt wird print(getattr(Fore, abbruchHinFarbe) + getattr(Back, abbruchVorFarbe), end="\r") # für Hintergrundfarbe und Zeichenfarbe, print(Style.RESET_ALL) für Reset except Exception: 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(" " * len(text), end="", flush=True) # Löscht gedruckte Zeile print(" ", end="\r", flush=True) def Abbruchsignal(): signal.signal(signal.SIGINT, Abbruch)