commit c68c881f28b9acc738156b3130e0c77d3ca5229a Author: Neox Date: Fri Feb 20 02:10:49 2026 +0100 Initial commit diff --git a/Glados.png b/Glados.png new file mode 100755 index 0000000..722c450 Binary files /dev/null and b/Glados.png differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..18253be --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Glados diff --git a/__pycache__/wetter_api.cpython-314.pyc b/__pycache__/wetter_api.cpython-314.pyc new file mode 100644 index 0000000..7263b81 Binary files /dev/null and b/__pycache__/wetter_api.cpython-314.pyc differ diff --git a/api_test.py b/api_test.py new file mode 100755 index 0000000..82ee9b9 --- /dev/null +++ b/api_test.py @@ -0,0 +1,71 @@ +import requests + + + +WMO_CODES = { + 0: "Klarer Himmel", + 1: "Hauptsächlich klar", + 2: "Teils bewölkt", + 3: "Bedeckt", + 45: "Nebel", + 48: "Ablagernder Rauhreifnebel", + 51: "Leichter Nieselregen", + 53: "Mäßiger Nieselregen", + 55: "Dichter Nieselregen", + 56: "Leichter gefrierender Nieselregen", + 57: "Dichter gefrierender Nieselregen", + 61: "Leichter Regen", + 63: "Mäßiger Regen", + 65: "Starker Regen", + 66: "Leichter gefrierender Regen", + 67: "Starker gefrierender Regen", + 71: "Leichter Schneefall", + 73: "Mäßiger Schneefall", + 75: "Starker Schneefall", + 77: "Schneegriesel", # Dein Code für morgen! + 80: "Leichte Regenschauer", + 81: "Mäßige Regenschauer", + 82: "Starke Regenschauer", + 85: "Leichte Schneeschauer", + 86: "Starke Schneeschauer", + 95: "Gewitter", + 96: "Gewitter mit leichtem Hagel", + 99: "Gewitter mit starkem Hagel" +} + +def get_braunschweig_weather(): + # Koordinaten für Braunschweig + url = "https://api.open-meteo.com/v1/forecast" + params = { + "latitude": 52.2659, + "longitude": 10.5267, + "daily": "temperature_2m_max,temperature_2m_min,weathercode", + "timezone": "Europe/Berlin", + "forecast_days": 3 + } + + try: + response = requests.get(url, params=params) + response.raise_for_status() + data = response.json() + + print(f"Wettervorhersage für Braunschweig (nächste {params['forecast_days']} Tage):") + print("-" * 50) + + daily = data['daily'] + for i in range(len(daily['time'])): + date = daily['time'][i] + print(type(date)) + max_temp = daily['temperature_2m_max'][i] + min_temp = daily['temperature_2m_min'][i] + # Ein einfacher Mapper für Wettercodes (WMO Standard) + code = daily['weathercode'][i] + + print(f"Datum: {date} | Max: {max_temp}°C | Min: {min_temp}°C | Code: {WMO_CODES[code]}") + + except Exception as e: + print(f"Fehler bei der Abfrage: {e}") + +if __name__ == "__main__": + get_braunschweig_weather() + diff --git a/datetest.py b/datetest.py new file mode 100644 index 0000000..e226850 --- /dev/null +++ b/datetest.py @@ -0,0 +1,11 @@ +test_datum = '2026-02-08' + + +wechesel = test_datum.split('-') + +jahr = wechesel[0] +monat = wechesel[1] +tag = wechesel[2] +print(f'{tag}.{monat}.{jahr}') + + diff --git a/diablo_arfTu.zip b/diablo_arfTu.zip new file mode 100755 index 0000000..96ed330 Binary files /dev/null and b/diablo_arfTu.zip differ diff --git a/main.py b/main.py new file mode 100755 index 0000000..e7d3898 --- /dev/null +++ b/main.py @@ -0,0 +1,82 @@ +import tkinter as tk +from PIL import Image, ImageTk +from wetter_api import get_braunschweig_wetter + + +#Fenster +root = tk.Tk() +#Fenstername +root.title("GLaDOS βφ") + +#Backgroundfarbedefinition +bg_color ="#000000" +#Schriftfarbendefinition +fg_color ="#ff0000" + +#Fensterhintergrund +root.configure(bg=bg_color) + +#Fontanpassungen +my_font = ("Diablo",35) + +#Fenstericon Umwandeln +img_original = Image.open("Glados.png") +img_resized = img_original.resize((64,64),Image.Resampling.LANCZOS) +icon_img = ImageTk.PhotoImage(img_resized) +root.iconphoto(False, icon_img) + +#Deffinition der Startweite vom Fenster +window_width = 800 #fix ggf für pi bildschirm +window_height = 600 + +#Abfrage der Bildschirmwerte +screen_width = root.winfo_screenwidth() +screen_height = root.winfo_screenheight() + +#Berechnung für Mitte des Bildschirms +center_x = int(screen_width/2 - window_width/2) +center_y = int(screen_height/2 - window_height/2) + +#Fenstergeometrie Definition +root.geometry(f"{window_width}x{window_height}+{center_x}+{center_y}") + +#Funktion für Vollbild (not statment für F11 an und aus = einem Schalter) +def toggle_fullscreen(event=None): + root.attributes("-fullscreen",not root.attributes("-fullscreen")) + +#Funktion für Vollbild beenden alternativ +def end_fullscreen(event=None): + root.attributes("-fullscreen",False) + +#Tastendefinitionen +root.bind("", toggle_fullscreen) +root.bind("", end_fullscreen) + +#untere Leiste Definition +status = tk.Label( + root, + text="F11: Vollbild | ESC: Beenden", + anchor="w",# Links + padx=10,#10 Pixel vom Randweg + bg="#222",#Hintergrundfarbe + fg="#ddd"#Schriftfarbe +) + +#Leiste ins Fensterpacken +status.pack(side="bottom",fill="x") + +#Dinge ins Fenster +wetter_daten = get_braunschweig_wetter() + +wetteranzeige ="" +for tag in wetter_daten: + wetteranzeige += f"{tag['Tag']}.{tag['Monat']}.{tag['Jahr']}:von {tag['Min']}°C bis {tag['Max']}°C - {tag['code']}\n" + + +message = tk.Label(root, text="Wettervorhersage für Braunschweig",fg=fg_color,bg=bg_color,font=my_font).pack() + +wetter = tk.Label(root, text=wetteranzeige, fg=fg_color, bg=bg_color, font=my_font).pack() + +#Fensterloop + +root.mainloop() diff --git a/tktester.py b/tktester.py new file mode 100755 index 0000000..d6ffb2d --- /dev/null +++ b/tktester.py @@ -0,0 +1,37 @@ +import tkinter as tk +from PIL import Image, ImageTk +from tkinter import ttk + +root = tk.Tk() +root.title("Tkinter Window Demo") +#root.geometry("600x480+50+50") +my_font=("Diablo",14) +root.configure(bg="#000000") +tk.Button(root, text="Classic Label").pack()#wenn dann den +ttk.Button(root, text="Themed Label").pack() + +img_original = Image.open("Glados.png") + +img_resized = img_original.resize((64,64),Image.Resampling.LANCZOS) + +icon_img = ImageTk.PhotoImage(img_resized) + +root.iconphoto(False, icon_img) + +window_width = 800 +window_height = 600 + +screen_width = root.winfo_screenwidth() +screen_height = root.winfo_screenheight() + +center_x = int(screen_width/2 - window_width/2) +center_y = int(screen_height/2 - window_height/2) + +root.geometry(f"{window_width}x{window_height}+{center_x}+{center_y}") +root.resizable(False,False) +#root.attributes("-alpha",0.5) + +message = tk.Label(root, text="Hello World!",bg="#000000",fg="#ffffff",font=my_font).pack() +#message.pack() + +root.mainloop() \ No newline at end of file diff --git a/wetter_api.py b/wetter_api.py new file mode 100755 index 0000000..6c581ca --- /dev/null +++ b/wetter_api.py @@ -0,0 +1,73 @@ +import requests + + + +WMO_CODES = { + 0: "Klarer Himmel", + 1: "Hauptsächlich klar", + 2: "Teils bewölkt", + 3: "Bedeckt", + 45: "Nebel", + 48: "Ablagernder Rauhreifnebel", + 51: "Leichter Nieselregen", + 53: "Mäßiger Nieselregen", + 55: "Dichter Nieselregen", + 56: "Leichter gefrierender Nieselregen", + 57: "Dichter gefrierender Nieselregen", + 61: "Leichter Regen", + 63: "Mäßiger Regen", + 65: "Starker Regen", + 66: "Leichter gefrierender Regen", + 67: "Starker gefrierender Regen", + 71: "Leichter Schneefall", + 73: "Mäßiger Schneefall", + 75: "Starker Schneefall", + 77: "Schneegriesel", # Dein Code für morgen! + 80: "Leichte Regenschauer", + 81: "Mäßige Regenschauer", + 82: "Starke Regenschauer", + 85: "Leichte Schneeschauer", + 86: "Starke Schneeschauer", + 95: "Gewitter", + 96: "Gewitter mit leichtem Hagel", + 99: "Gewitter mit starkem Hagel" +} + +def get_braunschweig_wetter(): + # Koordinaten für Braunschweig + url = "https://api.open-meteo.com/v1/forecast" + params = { + "latitude": 52.2659, + "longitude": 10.5267, + "daily": "temperature_2m_max,temperature_2m_min,weathercode", + "timezone": "Europe/Berlin", + "forecast_days": 3 + } + + try: + response = requests.get(url, params=params) + response.raise_for_status() + data = response.json() + daily = data['daily'] + ergebnis= [] + for i in range(len(daily['time'])): + date = daily['time'][i] + wechsel = date.split('-') + jahr = wechsel[0] + monat = wechsel[1] + tag = wechsel[2] + tagesdaten = { + 'Jahr' : jahr, + 'Monat' : monat, + 'Tag' : tag, + 'Max' : daily['temperature_2m_max'][i], + 'Min' : daily['temperature_2m_min'][i], + # Ein einfacher Mapper für Wettercodes (WMO Standard) + 'code' : WMO_CODES.get(daily['weathercode'][i]), + } + ergebnis.append(tagesdaten) + + except Exception as e: + return [f"Fehler bei der Abfrage: {e}"] + + return ergebnis