Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengekalkan Kod Tersuai Apabila Merekabentuk Semula UI Pereka Qt dalam Python?

Bagaimana untuk Mengekalkan Kod Tersuai Apabila Merekabentuk Semula UI Pereka Qt dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-15 22:10:18324semak imbas

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

Cara Mengekalkan Perubahan Kod Semasa Merancang Semula Antara Muka Pengguna dengan QtDesigner

Apabila menggunakan Qt Designer untuk mencipta GUI untuk aplikasi Python, adalah mengecewakan untuk kehilangan perubahan kod tersuai pada UI berikutnya reka bentuk semula. Artikel ini meneroka penyelesaian kepada masalah ini dan memperkenalkan konsep pemisahan logik kepada fail Python yang berasingan.

Mengekalkan Perubahan Kod

Untuk mengelakkan kehilangan perubahan kod semasa mereka bentuk semula UI menggunakan Qt Designer, adalah disyorkan untuk buat fail kedua yang melaksanakan logik GUI, sambil mengekalkan kod yang dijana daripada Qt Designer berasingan.

Untuk contoh, jika templat MainWindow digunakan dalam "design.ui," tukarkannya kepada "Ui_Design.py" dan buat fail baharu "logic.py" untuk melaksanakan 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)

Menggunakan pendekatan ini memastikan bahawa perubahan UI yang dibuat dalam Qt Designer tidak akan menimpa kod tersuai dalam "logic.py."

Menyebarkan Logik Merentasi Fail dalam Python

Untuk menyusun dan menyelenggara kod selanjutnya, anda boleh membahagikan kelas logik kepada berbilang fail, memastikan setiap fail memfokus pada aspek fungsi tertentu.

Untuk mencapai ini, kelas logik mesti ikut spesifik struktur:

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

Di mana:

  • PyQtClass: Bergantung pada templat Qt yang dipilih (cth., QMainWindow untuk Tetingkap, QWidget untuk Widget).
  • DesignClass: Adakah kelas yang dijana oleh Qt Designer (cth., Ui_MainWindow).

Menutup PyQt MessageBox dengan Parent Window's CloseEvent

Sebagai contoh melaksanakan logik dalam fail berasingan, pertimbangkan untuk mencipta pengendali peristiwa rapat yang memaparkan kotak mesej pengesahan sebelum menutup PyQt aplikasi.

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()

Dengan membahagikan kod kepada fail berasingan dan mengikut struktur kelas logik, anda boleh dengan mudah mengekalkan dan melanjutkan aplikasi Python berasaskan Qt anda sambil mengekalkan perubahan kod tersuai di tengah-tengah reka bentuk semula UI.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Kod Tersuai Apabila Merekabentuk Semula UI Pereka Qt dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn