18

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

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

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

4

1 に答える 1

25

私はまさにそれを 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 をインスタンス化すると、Qt Designer で設計した UI が表示されます。

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

于 2013-02-15T12:14:43.277 に答える