使用Qt Designer 為Python 應用程式建立GUI 時,在後續UI 中遺失自訂程式碼變更是令人沮喪的重新設計。本文探討了此問題的解決方案,並介紹了將邏輯拆分為單獨的 Python 檔案的概念。
為了避免在使用 Qt Designer 重新設計 UI 時遺失程式碼更改,建議建立一個實作 GUI 邏輯的輔助文件,同時將 Qt Designer 產生的程式碼分開。
例如,如果使用 MainWindow 模板在「design.ui」中,將其轉換為「Ui_Design.py」並建立一個新檔案「logic.py」來實現邏輯。
# 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)
使用此方法可確保在 Qt Designer 中進行的 UI 變更將不要覆寫「logic.py」中的自訂程式碼。
進一步組織和維護程式碼中,您可以將邏輯類別拆分為多個文件,確保每個文件專注於功能的特定方面。
要實現此目的,邏輯類別必須遵循特定的結構:
class Logic(PyQtClass, DesignClass): def __init__(self, *args, **kwargs): PyQtClass.__init__(self, *args, **kwargs) self.setupUi(self)
其中:
作為在單獨的文件中實現邏輯的示例,請考慮創建一個關閉事件處理程序,在關閉PyQt 應用程序之前顯示確認訊息框。
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()
透過將程式碼分割為單獨的檔案並遵循邏輯類別結構,您可以輕鬆維護和擴展基於 Qt 的 Python 應用程序,同時在 UI 重新設計中保留自訂程式碼變更。
以上是在 Python 中重新設計 Qt Designer UI 時如何保留自訂程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!