Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mencegah Kehilangan Kod Tersuai Apabila Merekabentuk Semula UI Pereka Qt?

Bagaimanakah Saya Boleh Mencegah Kehilangan Kod Tersuai Apabila Merekabentuk Semula UI Pereka Qt?

Patricia Arquette
Lepaskan: 2024-12-18 03:19:10
asal
799 orang telah melayarinya

How Can I Prevent Losing Custom Code When Redesigning Qt Designer UIs?

Menyelesaikan Pengubahsuaian yang Hilang dalam Reka Bentuk Semula UI Qt Designer

Apabila menggunakan Qt Designer untuk mereka bentuk antara muka pengguna grafik (GUI) untuk Python, ada kemungkinan untuk menghadapi isu yang mengecewakan: pengubahsuaian dibuat pada kod Python yang dijana hilang apabila UI direka bentuk semula. Ini boleh menjadi kesulitan yang ketara, terutamanya apabila anda telah melaburkan banyak usaha dalam menyesuaikan kod untuk fungsi tertentu.

Pemisahan Reka Bentuk dan Logik

Kunci untuk menyelesaikan masalah ini terletak pada memisahkan Reka bentuk UI daripada kod yang mengendalikan fungsi UI. Daripada mengubah suai terus kod Python yang dijana, buat kelas baharu yang menggunakan reka bentuk tetapi mengendalikan logik secara berasingan.

Contoh Pelaksanaan

Pertimbangkan contoh berikut menggunakan templat MainWindow daripada Qt Pereka:

Ui_MainWindow.py

from PyQt5 import QtCore, QtGui, QtWidgets

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

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

logic.py

from Ui_MainWindow import Ui_MainWindow

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

Dengan menggunakan pendekatan ini, anda boleh membuat perubahan pada reka bentuk dalam Qt Designer tanpa menjejaskan kod dalam logic.py.

Pemilihan Kelas Reka Bentuk

Pilihan PyQtClass bergantung pada templat reka bentuk yang dipilih:

Template PyQtClass
Main Window QMainWindow
Widget QWidget
Dialog with Buttons Bottom QDialog
Dialog with Buttons Right QDialog
Dialog with Without Buttons QDialog

Ciri Tambahan

Pelaksanaan ini membenarkan pelaksanaan logik lanjutan dalam kelas logik, seperti mengendalikan peristiwa penutupan tetingkap. Berikut ialah contoh:

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 Mencegah Kehilangan Kod Tersuai Apabila Merekabentuk Semula UI Pereka Qt?. 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