self.close() wird nicht ausgeführt
Verfasst: Montag 19. Februar 2024, 14:30
Hallo zusammen, Ich versuche an einem privaten Projekt zu arbeiten. Kurz gesagt, ich möchte eine Art Datei-Umbenennungstool erstellen, das Videodateien in einem Ordner umbenennt. Dafür verwende ich PyQt5 für die grafische Benutzeroberfläche, aber ich komme nicht weiter. Auf der Benutzeroberfläche gibt es einen Speichern-Button; wenn ich darauf klicke, sollen alle Änderungen in einem vorhandenen Wörterbuch aktualisiert werden, die GUI soll geschlossen werden, und das Wörterbuch soll an den Hauptcode zurückgegeben werden. Allerdings wird mein `self.close()` ausgeführt, aber die GUI bleibt geöffnet, und das Wörterbuch wird nicht zurückgegeben. Ich habe auf stakeoverflow geschaut und chatgpt gefragt, aber keines konnte mir weiterhelfen.
Ich habe hier einen Teil des Codes gepostet, damit er direkt ausgeführt werden kann.
Danke für eure Hilfe
Ich habe hier einen Teil des Codes gepostet, damit er direkt ausgeführt werden kann.
Danke für eure Hilfe
Code: Alles auswählen
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QSpinBox, QVBoxLayout, QScrollArea, QGridLayout, QLineEdit, QDateEdit, QMessageBox, QSizePolicy, QComboBox,QHBoxLayout, QMainWindow
from PyQt5.QtCore import QSize, Qt
from style import apply_dark_theme
import sys
from PyQt5 import QtCore, QtWidgets
class Ui_MainWindow(QMainWindow):
def __init__(self, videofiles, gruppenliste):
super().__init__()
self.videofiles = videofiles
self.gruppenliste = gruppenliste
self.setupUi(self)
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1174, 660)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
MainWindow.setCentralWidget(self.centralwidget)
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(7, 1, 269, 179))
self.widget.setObjectName("widget")
self.gridLayout = QtWidgets.QGridLayout(self.widget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
save_button = QPushButton("Speichern")
save_button.clicked.connect(self.save_changes)
save_button.setGeometry(QtCore.QRect(10, 594, 1151, 30))
save_button.setParent(self.centralwidget) # Button-Widget zum Zentralwidget hinzufügen
def save_changes(self):
print("Speichern geklickt!")
#Die self.close wird nicht ausgeführt die gui bleibt bestehn nach dem speichern geht der code nicht zu print Videofiles
self.close()
return self.videofiles
def create_gui(videofiles, gruppenliste):
app = QApplication.instance()
if app is None:
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow(videofiles, gruppenliste)
ui.setupUi(MainWindow)
MainWindow.show()
app.exec_() #Der Code geht save_change hier zurück und wird dann nicht weiter ausgeführt
return ui.videofiles
if __name__ == "__main__":
gruppenliste = ['aaa', 'bbbb', 'cc']
videofiles = {
'MM__01.mkv': ['Testffffffffffffffffffffffff', 'A Town Where You Live.', 'AMV', '', '02', '01', 'GruppeKampfkuchen', '.mkv'],
'MM__02.mkv': ['Test', 'A Town Where You Live.', 'Film', '2012', '02', '02', 'GruppeKampfkuchen', '.mkv'],
'MM__03.mkv': ['Test', 'A Town Where You Live.', '', '', '02', '03', 'GruppeKampfkuchen', '.mkv'],
}
videofiles = create_gui(videofiles, gruppenliste)
print(videofiles)