変更を上書きせずに 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)
ここで:
追加の利点:
この実装により、親で 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 サイトの他の関連記事を参照してください。