ホームページ > バックエンド開発 > Python チュートリアル > Qt デザイナー UI を再設計するときにカスタム コードの損失を防ぐにはどうすればよいですか?

Qt デザイナー UI を再設計するときにカスタム コードの損失を防ぐにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-18 03:19:10
オリジナル
808 人が閲覧しました

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

Qt デザイナー UI の再設計で失われた変更を解決する

Qt デザイナーを利用して Python のグラフィカル ユーザー インターフェイス (GUI) を設計する場合、変更というイライラする問題が発生する可能性があります。生成された Python コードに加えられた内容は、UI が再設計されると失われます。これは、特に特定の機能のコードをカスタマイズするのに多大な労力を費やした場合に、非常に不便になる可能性があります。

デザインとロジックの分離

この問題を解決する鍵は、デザインとロジックを分離することにあります。 UI の機能を処理するコードからの UI デザイン。生成された Python コードを直接変更する代わりに、デザインを使用するがロジックを個別に処理する新しいクラスを作成します。

実装例

Qt の MainWindow テンプレートを使用した次の例を考えてみましょう。デザイナー:

Ui_MainWindow.py

from PyQt5 import QtCore, QtGui, QtWidgets

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

    def retranslateUi(self, MainWindow):
        [...]
ログイン後にコピー

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)
ログイン後にコピー

このアプローチを採用すると、 Qt Designer のコードに影響を与えることなく、デザインを変更できます。 logic.py.

設計クラスの選択

PyQtClass の選択は、選択した設計テンプレートによって異なります。

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

追加機能

この実装ウィンドウを閉じるイベントの処理など、ロジック クラス内での高度なロジックの実装が可能になります。以下に例を示します:

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 デザイナー UI を再設計するときにカスタム コードの損失を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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