it-praxisportal/16_master_abschlussprojekt/app.py

72 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
Kapitel 16: Master-Abschlussprojekt – Desktop App Launcher 🐾🖥️
===============================================================
Startet die vollwertige grafische Desktop-Applikation 'Tierheim & PetCare Pro'.
Ausführen mit:
python3 app.py
"""
import sys
from pathlib import Path
# Pfad hinzufügen, um Module des Kapitels sauber zu importieren
sys.path.insert(0, str(Path(__file__).parent))
try:
import tkinter as tk
from tkinter import messagebox
TK_AVAILABLE = True
except ImportError:
TK_AVAILABLE = False
# Importiere Klassen aus aufgabe oder musterloesung
try:
from musterloesung import Tierheim, TierheimApp, Hund, Katze, Vogel
except ImportError:
from aufgabe import Tierheim, TierheimApp, Hund, Katze, Vogel
def starte_musterdaten_tierheim() -> Tierheim:
"""Erstellt ein Tierheim mit liebevoll gestalteten Beispieltieren."""
heim = Tierheim(name="Tierheim Sonnenschein & Pfotenglück", max_kapazitaet=15)
# Beispieldaten hinzufügen
bello = Hund("Bello", alter=3, gewicht=16.5, rasse="Golden Retriever", geimpft=True, hunger=30, gassigegangen=True)
luna = Katze("Luna", alter=2, gewicht=4.1, stubenrein=True, geimpft=True, hunger=40)
rocky = Hund("Rocky", alter=5, gewicht=22.0, rasse="Deutscher Schäferhund", geimpft=False, hunger=70)
mimi = Katze("Mimi", alter=1, gewicht=3.2, stubenrein=True, geimpft=False, hunger=60)
tweety = Vogel("Tweety", alter=1, gewicht=0.25, spannweite_cm=18.5, kann_sprechen=True, geimpft=True, hunger=20)
charly = Vogel("Charly", alter=4, gewicht=0.45, spannweite_cm=28.0, kann_sprechen=False, geimpft=False, hunger=80)
for t in (bello, luna, rocky, mimi, tweety, charly):
heim.tier_aufnehmen(t)
return heim
def main():
print("=" * 65)
print("🐾 Tierheim- & PetCare-Manager Pro (Master-Abschlussprojekt)")
print("=" * 65)
if not TK_AVAILABLE:
print("⚠️ Hinweis: Tkinter ist auf diesem System nicht verfügbar.")
print("💡 Führe 'python3 test_aufgabe.py' aus, um das System headless zu testen!")
return
try:
root = tk.Tk()
heim = starte_musterdaten_tierheim()
app = TierheimApp(root, heim)
print(f"✨ GUI erfolgreich gestartet mit {len(heim)} Beispieltieren.")
print("🖥️ Schließe das Fenster, um die Anwendung zu beenden.")
root.mainloop()
except Exception as e:
print(f"⚠️ Konnte GUI nicht im Display anzeigen: {e}")
print("💡 Auf Servern ohne Monitor (Headless) kannst du die Logik mit 'python3 test_aufgabe.py' prüfen.")
if __name__ == "__main__":
main()