Heim > Backend-Entwicklung > Python-Tutorial > Wie kann benutzerdefinierter Code bei der Neugestaltung von Qt Designer-Benutzeroberflächen in Python beibehalten werden?

Wie kann benutzerdefinierter Code bei der Neugestaltung von Qt Designer-Benutzeroberflächen in Python beibehalten werden?

Linda Hamilton
Freigeben: 2024-12-15 22:10:18
Original
322 Leute haben es durchsucht

How to Preserve Custom Code When Redesigning Qt Designer UIs in Python?

So behalten Sie Codeänderungen bei der Neugestaltung von Benutzeroberflächen mit QtDesigner bei

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.

Codeänderungen beibehalten

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

Durch die Verwendung dieses Ansatzes wird sichergestellt, dass in Qt Designer vorgenommene UI-Änderungen nicht vorgenommen werden Überschreiben Sie benutzerdefinierten Code in „logic.py“.

Logik über Dateien in Python verteilen

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

Wobei:

  • PyQtClass: Hängt von der gewählten Qt-Vorlage ab (z. B. QMainWindow für Window, QWidget für Widget).
  • DesignClass: Ist die von Qt Designer generierte Klasse (z. B. Ui_MainWindow).

Schließen der PyQt MessageBox mit dem CloseEvent des übergeordneten Fensters

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

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!

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