web-dev-qa-db-ja.com

PySideを使用して.uiファイルをpythonクラスにロードするにはどうすればよいですか?

私はかなり長い間PyQtを使用してきましたが、それを使用している間ずっと、かなり一貫したプログラミングパターンがありました。

  1. QtDesignerを使用して.uiファイルを作成します。
  2. .uiファイルで作成したウィジェットと同じタイプのpythonクラスを作成します。
  3. pythonクラスを初期化するときは、uicを使用して.uiファイルをクラスに動的にロードします。

PySideで同様のことをする方法はありますか?ドキュメントと例を読みましたが、最も近いものは、.uiファイルをpythonコードに事前レンダリングした電卓の例でした。これは非常に古い方法です。 PyQtでそれを(UIを解析できるのになぜpythonに焼くのですか?)

18
Brendan Abel

私はPySideでまさにそれを行っています。 :)

これを使用します https://Gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8 (Sebastian Wiesnerによるオリジナルは https://github.com/lunaryorn/snippets/blob/master/ qt4/designer/pyside_dynamic.py しかし消えました)-これはPySide.QtUiTools.QUiLoaderをオーバーライドし、新しいloadUi()メソッドを提供してこれを実行できるようにします。

class MyMainWindow(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        loadUi('mainwindow.ui', self)

MyMainWindowをインスタンス化すると、QtDesignerで設計したUIが表示されます。

カスタムウィジェット(Qt Designerの「PromoteTo」)も使用する必要がある場合は、次の回答を参照してください: https://stackoverflow.com/a/14877624/53251

22
Charl Botha