Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mengemas kini UI Pereka Qt Saya Tanpa Kehilangan Perubahan Kod Saya?

Bagaimanakah Saya Boleh Mengemas kini UI Pereka Qt Saya Tanpa Kehilangan Perubahan Kod Saya?

Mary-Kate Olsen
Lepaskan: 2024-12-18 06:15:09
asal
431 orang telah melayarinya

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

Kemas Kini UI QtDesigner Tanpa Ganti Ganti

Jika anda menghadapi masalah perubahan UI yang dibuat dalam Qt Designer kemudiannya ditimpa selepas penukaran kod , artikel ini menyediakan penyelesaian untuk mengekalkan pengubahsuaian anda.

Untuk menangani masalah ini, elakkan mengubah suai kod Python yang dihasilkan secara langsung. Sebaliknya, buat kelas berasingan dalam fail baharu untuk mengendalikan logik UI. Kelas ini harus mewarisi daripada kelas reka bentuk yang dijana oleh Qt Designer dan melaksanakan kaedahnya.

Contoh:

Pertimbangkan templat MainWindow dengan fail design.ui yang sepadan. Tukarkannya kepada Ui_Design.py seperti berikut:

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

    def retranslateUi(self, MainWindow):
        [...]
Salin selepas log masuk

Buat logic.py fail baharu:

class Logic(QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setupUi(self)
Salin selepas log masuk

Dengan mengikuti peraturan ini, anda boleh mengubah suai reka bentuk dan menjana semula kodnya tanpa menjejaskan pelaksanaan logik anda. Pastikan kelas logik anda mematuhi struktur berikut:

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

Di mana:

  • PyQtClass bergantung pada templat reka bentuk (cth., QMainWindow, QWidget) .
  • DesignClass ialah nama kelas dalam reka bentuk anda (cth., Ui_MainWindow).

Faedah Tambahan:

Pelaksanaan ini membolehkan anda melaksanakan logik dalam widget yang ditetapkan, seperti menutup kotak mesej pyqt dengan induk penutupan tetingkapAcara:

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()
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas kini UI Pereka Qt Saya Tanpa Kehilangan Perubahan Kod Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan