首頁 >後端開發 >Python教學 >在 Python 中重新設計 Qt Designer UI 時如何保留自訂程式碼?

在 Python 中重新設計 Qt Designer UI 時如何保留自訂程式碼?

Linda Hamilton
Linda Hamilton原創
2024-12-15 22:10:18324瀏覽

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

使用QtDesigner 重新設計使用者介面時如何保留程式碼變更

使用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」中的自訂程式碼。

在 Python 中跨文件傳播邏輯

進一步組織和維護程式碼中,您可以將邏輯類別拆分為多個文件,確保每個文件專注於功能的特定方面。

要實現此目的,邏輯類別必須遵循特定的結構:

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

其中:

  • PyQtClass: 取決於所選的Qt 模板(例如,QMainWindow 代表Window,QWidget 代表Widget)。
  • DesignClass: 是由 Qt Designer 產生的類別(例如 Ui_MainWindow)。

關閉PyQt帶有父窗口CloseEvent 的MessageBox

作為在單獨的文件中實現邏輯的示例,請考慮創建一個關閉事件處理程序,在關閉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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn