ホームページ > バックエンド開発 > Python チュートリアル > コードの変更を失わずに Qt Designer UI を更新するにはどうすればよいですか?

コードの変更を失わずに Qt Designer UI を更新するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-18 06:15:09
オリジナル
439 人が閲覧しました

How Can I Update My Qt Designer UI Without Losing My Code Changes?

変更を上書きせずに QtDesigner UI を更新する

Qt Designer で行われた UI の変更がコード変換後に上書きされる問題が発生した場合、この記事では、変更を保存するための解決策を提供します。

この問題に対処するには、変更を避けてください。生成された Python コードを直接読み込むことができます。代わりに、UI ロジックを処理するための別のクラスを新しいファイルに作成します。このクラスは、Qt Designer によって生成されたデザイン クラスを継承し、そのメソッドを実装する必要があります。

例:

対応する design.ui ファイルを持つ MainWindow テンプレートを考えてみましょう。次のように Ui_Design.py に変換します:

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

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

新しいファイルlogic.pyを作成します:

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

これらのルールに従うことで、デザインを変更してコードを再生成することができます。ロジックの実装に影響します。ロジック クラスが次の構造に従っていることを確認してください:

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

ここで:

  • PyQtClass はデザイン テンプレート (例: QMainWindow、QWidget) に依存します。 .
  • DesignClass は、デザイン内のクラスの名前です。 (例: Ui_MainWindow)。

追加の利点:

この実装により、親で pyqt messageBox を閉じるなど、指定されたウィジェット内にロジックを実装できます。ウィンドウの closeEvent:

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 Designer UI を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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