Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengemas kini UI Pereka Qt Saya Tanpa Kehilangan Perubahan Kod Saya?
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): [...]
Buat logic.py fail baharu:
class Logic(QMainWindow, Ui_MainWindow): def __init__(self, *args, **kwargs): QMainWindow.__init__(self, *args, **kwargs) self.setupUi(self)
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)
Di mana:
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()
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!