diff --git a/TODOMAIN.txt b/TODOMAIN.txt new file mode 100644 index 0000000..2de0041 --- /dev/null +++ b/TODOMAIN.txt @@ -0,0 +1,26 @@ +Das ist eine hervorragende Entscheidung! Ein zentrales Startmenü (Launcher) macht die Nutzung und spätere Erstellung einer `.exe` viel sauberer. + +Ich werde dir nun eine neue Datei namens `main.py` generieren. Dieses Skript erstellt ein kleines, schickes Startfenster mit drei Buttons. Klickst du auf einen Button, öffnet sich das jeweilige Tool. + +### 🔧 Zwei wichtige Schritte, bevor du es testest: + +Damit dieses Hauptmenü reibungslos funktioniert, musst du kurz zwei Dinge in deinen bestehenden Skripten checken: + +**1. Klassennamen anpassen** +Schau in deinen Dateien (`Instasong.py` etc.) nach, wie die Hauptklasse deines Fensters heißt (z. B. `class MainWindow(QMainWindow):`). Trage diesen Namen oben in der `main.py` bei den Import-Befehlen anstelle von `DeineInstaKlasse` etc. ein. + +**2. Der `if __name__ == '__main__':` Block** +Wenn du die `main.py` startest, importiert sie deine anderen Skripte. Damit diese beim Importieren nicht *sofort* ungefragt aufpoppen, muss der Start-Code in deinen drei Skripten ganz unten hinter einer Abfrage versteckt sein. +Prüfe, ob das Ende deiner drei Skripte ungefähr so aussieht: + +```python +# Nur ausführen, wenn das Skript direkt gestartet wird, nicht beim Import! +if __name__ == "__main__": + app = QApplication(sys.argv) + window = DeineKlasse() + window.show() + sys.exit(app.exec()) + +``` + +Wenn das alles passt, kannst du nun einfach `main.py` starten und hast dein Menü! Wenn du daraus später eine `.exe` machen willst, musst du PyInstaller nur noch auf die `main.py` anwenden (`pyinstaller --noconsole main.py`) – PyInstaller erkennt die anderen Skripte dann ganz automatisch. \ No newline at end of file diff --git a/main_launcher.py b/main_launcher.py new file mode 100644 index 0000000..d3536bd --- /dev/null +++ b/main_launcher.py @@ -0,0 +1,74 @@ +import sys +from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLabel +from PyQt6.QtCore import Qt + +# ------------------------------------------------------------------- +# WICHTIG: Hier importieren wir deine drei bestehenden Skripte. +# Du musst "DeineInstaKlasse", "DeineEditKlasse" und "DeineMetaKlasse" +# durch die tatsächlichen Namen deiner Klassen ersetzen! +# (Z.B. durch den Namen, der in Instasong.py hinter "class " steht) +# ------------------------------------------------------------------- +from Instasong import DeineInstaKlasse +from editfinde_GUI import DeineEditKlasse +from metaddateGUItest import DeineMetaKlasse + +class MainLauncher(QMainWindow): + def __init__(self): + super().__init__() + self.setWindowTitle("Python Skript-Sammlung") + self.setFixedSize(300, 250) + + # Haupt-Widget und Layout + central_widget = QWidget() + layout = QVBoxLayout() + layout.setSpacing(15) + layout.setContentsMargins(20, 20, 20, 20) + + # Titel + title = QLabel("Bitte wähle ein Tool:") + font = title.font() + font.setPointSize(12) + font.setBold(True) + title.setFont(font) + title.setAlignment(Qt.AlignmentFlag.AlignCenter) + layout.addWidget(title) + + # Buttons erstellen + self.btn_insta = QPushButton("🎵 Insta Song") + self.btn_edit = QPushButton("🎬 Edit Finder") + self.btn_meta = QPushButton("📅 Meta Date") + + # Buttons etwas größer machen + for btn in (self.btn_insta, self.btn_edit, self.btn_meta): + btn.setMinimumHeight(40) + layout.addWidget(btn) + + central_widget.setLayout(layout) + self.setCentralWidget(central_widget) + + # Klick-Events (Signale) mit den Funktionen (Slots) verknüpfen + self.btn_insta.clicked.connect(self.open_instasong) + self.btn_edit.clicked.connect(self.open_editfinder) + self.btn_meta.clicked.connect(self.open_metadate) + + # WICHTIG: Wir brauchen eine Variable, um das geöffnete Fenster + # im Speicher zu halten, sonst schließt es sich sofort wieder. + self.active_window = None + + def open_instasong(self): + self.active_window = DeineInstaKlasse() + self.active_window.show() + + def open_editfinder(self): + self.active_window = DeineEditKlasse() + self.active_window.show() + + def open_metadate(self): + self.active_window = DeineMetaKlasse() + self.active_window.show() + +if __name__ == "__main__": + app = QApplication(sys.argv) + launcher = MainLauncher() + launcher.show() + sys.exit(app.exec()) \ No newline at end of file