ホームページ > バックエンド開発 > Python チュートリアル > Python で Qt Designer UI を再設計するときにカスタム コードを保存するにはどうすればよいですか?

Python で Qt Designer UI を再設計するときにカスタム コードを保存するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-15 22:10:18
オリジナル
322 人が閲覧しました

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

QtDesigner でユーザー インターフェイスを再設計するときにコードの変更を保存する方法

Qt Designer を使用して Python アプリケーションの GUI を作成する場合、後続の UI でカスタム コードの変更が失われるのはイライラします再設計します。この記事では、この問題の解決策を検討し、ロジックを個別の Python ファイルに分割するという概念を紹介します。

コード変更の維持

Qt デザイナーを使用して UI を再設計するときにコードの変更が失われないようにするには、次のことをお勧めします。 Qt Designer から生成されたコードを別に保ちながら、GUI ロジックを実装するセカンダリ ファイルを作成します。

たとえば、 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)
ログイン後にコピー

このアプローチを使用すると、UI の変更が確実に行われます。 Qt Designer では、「logic.py」のカスタム コードは上書きされません。

ファイル全体にロジックを分散するPython

コードをさらに整理して管理するには、ロジック クラスを複数のファイルに分割し、各ファイルが機能の特定の側面に重点を置くようにすることができます。

これを実現するには、ロジック クラスは次のようにする必要があります。特定のものに従ってください構造体:

class Logic(PyQtClass, DesignClass):
    def __init__(self, *args, **kwargs):
        PyQtClass.__init__(self, *args, **kwargs)
        self.setupUi(self)
ログイン後にコピー

ここで:

  • PyQtClass: 選択した Qt テンプレートに依存します (例: Window の場合は QMainWindow、QWidget の場合は QWidget) Widget).
  • DesignClass: Qt デザイナーによって生成されたクラス (例: Ui_MainWindow)。

親ウィンドウの CloseEvent で PyQt MessageBox を閉じる

別のファイルにロジックを実装する例として、次のファイルを作成することを検討してください。 PyQt アプリケーションを閉じる前に確認メッセージ ボックスを表示する close イベント ハンドラー。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート