Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich meine Qt Designer-Benutzeroberfläche aktualisieren, ohne meine Codeänderungen zu verlieren?

Wie kann ich meine Qt Designer-Benutzeroberfläche aktualisieren, ohne meine Codeänderungen zu verlieren?

Mary-Kate Olsen
Freigeben: 2024-12-18 06:15:09
Original
430 Leute haben es durchsucht

How Can I Update My Qt Designer UI Without Losing My Code Changes?

QtDesigner-UI-Updates ohne Überschreiben von Änderungen

Wenn Sie auf das Problem gestoßen sind, dass in Qt Designer vorgenommene UI-Änderungen später nach der Codekonvertierung überschrieben werden Dieser Artikel bietet eine Lösung, um Ihre Änderungen beizubehalten.

Um dieses Problem zu beheben, vermeiden Sie es, den generierten Python-Code direkt zu ändern. Erstellen Sie stattdessen eine separate Klasse in einer neuen Datei, um die UI-Logik zu verarbeiten. Diese Klasse sollte von der von Qt Designer generierten Designklasse erben und deren Methoden implementieren.

Beispiel:

Betrachten Sie eine MainWindow-Vorlage mit einer entsprechenden design.ui-Datei. Konvertieren Sie es wie folgt in Ui_Design.py:

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        [...]

    def retranslateUi(self, MainWindow):
        [...]
Nach dem Login kopieren

Erstellen Sie eine neue Datei „logic.py“:

class Logic(QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setupUi(self)
Nach dem Login kopieren

Durch Befolgen dieser Regeln können Sie das Design ändern und seinen Code ohne neu generieren Auswirkungen auf Ihre Logikimplementierung. Stellen Sie sicher, dass Ihre Logikklasse der folgenden Struktur entspricht:

class Logic(PyQtClass, DesignClass):
    def __init__(self, *args, **kwargs):
        PyQtClass.__init__(self, *args, **kwargs)
        self.setupUi(self)
Nach dem Login kopieren

Wobei:

  • PyQtClass hängt von der Designvorlage ab (z. B. QMainWindow, QWidget) .
  • DesignClass ist der Name der Klasse in Ihrem Design (z. B. Ui_MainWindow).

Zusätzliche Vorteile:

Mit dieser Implementierung können Sie Logik innerhalb eines bestimmten Widgets implementieren, z. B. das Schließen einer Pyqt-MessageBox mit dem closeEvent des übergeordneten Fensters:

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()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich meine Qt Designer-Benutzeroberfläche aktualisieren, ohne meine Codeänderungen zu verlieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage