TODO Main GUI
This commit is contained in:
parent
7a0173563f
commit
2ae7410390
2 changed files with 100 additions and 0 deletions
26
TODOMAIN.txt
Normal file
26
TODOMAIN.txt
Normal 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
74
main_launcher.py
Normal 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())
|
||||
Loading…
Reference in a new issue