TODO Main GUI

This commit is contained in:
Jannis 2026-09-27 01:34:58 +02:00
parent 7a0173563f
commit 2ae7410390
2 changed files with 100 additions and 0 deletions

26
TODOMAIN.txt Normal file
View file

@ -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.

74
main_launcher.py Normal file
View file

@ -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())