Wenn Sie Qt Designer zum Erstellen von GUIs für Python-Anwendungen verwenden, ist es frustrierend, wenn benutzerdefinierte Codeänderungen bei der nachfolgenden Benutzeroberfläche verloren gehen Neugestaltungen. In diesem Artikel wird eine Lösung für dieses Problem untersucht und das Konzept der Aufteilung der Logik in separate Python-Dateien vorgestellt.
Um zu vermeiden, dass Codeänderungen bei der Neugestaltung der Benutzeroberfläche mit Qt Designer verloren gehen, wird dies empfohlen Erstellen Sie eine sekundäre Datei, die die GUI-Logik implementiert, während Sie den generierten Code von Qt Designer getrennt halten.
Zum Beispiel, wenn die MainWindow-Vorlage in verwendet wird „design.ui“, konvertieren Sie es in „Ui_Design.py“ und erstellen Sie eine neue Datei „logic.py“ zum Implementieren der Logik.
# Ui_Design.py (Generated from Qt Designer) from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): [...] def retranslateUi(self, MainWindow): [...] # logic.py from PyQt5 import QtCore, QtGui, QtWidgets from Ui_Design import Ui_MainWindow class Logic(QMainWindow, Ui_MainWindow): def __init__(self, *args, **kwargs): QMainWindow.__init__(self, *args, **kwargs) self.setupUi(self)
Durch die Verwendung dieses Ansatzes wird sichergestellt, dass in Qt Designer vorgenommene UI-Änderungen nicht vorgenommen werden Überschreiben Sie benutzerdefinierten Code in „logic.py“.
Um den Code weiter zu organisieren und zu verwalten, können Sie die Logikklasse aufteilen in mehrere Dateien aufteilen, um sicherzustellen, dass sich jede Datei auf einen bestimmten Aspekt der Funktionalität konzentriert.
Um dies zu erreichen, muss die Logikklasse einer bestimmten Struktur folgen:
class Logic(PyQtClass, DesignClass): def __init__(self, *args, **kwargs): PyQtClass.__init__(self, *args, **kwargs) self.setupUi(self)
Wobei:
Als Beispiel für die Implementierung von Logik in separaten Dateien sollten Sie die Erstellung eines Close-Event-Handlers in Betracht ziehen, der zuvor ein Bestätigungsmeldungsfeld anzeigt Schließen der PyQt-Anwendung.
class Logic(QMainWindow, Ui_MainWindow): def __init__(self, *args, **kwargs): QMainWindow.__init__(self, *args, **kwargs) self.setupUi(self) def closeEvent(self, event): answer = QtWidgets.QMessageBox.question( self, 'Are you sure you want to quit ?', 'Task is in progress !', QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) if answer == QtWidgets.QMessageBox.Yes: event.accept() else: event.ignore()
Durch Aufteilen des Codes in separate Dateien und Befolgen der Logikklassenstruktur können Sie Ihre Qt-basierten Python-Anwendungen einfach verwalten und erweitern und gleichzeitig benutzerdefinierte Codeänderungen bei Neugestaltungen der Benutzeroberfläche beibehalten.
Das obige ist der detaillierte Inhalt vonWie kann benutzerdefinierter Code bei der Neugestaltung von Qt Designer-Benutzeroberflächen in Python beibehalten werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!