65

PyQt5 チュートリアルを探しています。チュートリアルなしで初めて Python で GUI 開発を始めるのはかなり複雑です。

これまでのところ、いくつかの PyQt4 チュートリアルしか見つかりませんでした。たとえば、Qt4 から Qt5 に何かが変更され、SIGNALQt5SLOTではサポートされなくなったため、PyQt5 用の特定のチュートリアルがあると便利です。

PyQt5 で GUI 開発を開始する方法について、誰かがチュートリアルを提供してもらえますか?

4

3 に答える 3

75

PyQt5 の深みへの旅が続くので、私が見つけた輝かしい宝物のいくつかでこの回答を更新し続けます。

そうは言っても、私は今、PyQt5 の簡単な紹介で「ラフ ドラフト」を突き刺しています。また、役立つリソースへのリンクも提供します。私もこのフレームワークは初めてなので、その戦略を理解するにつれて、それを使用するための良い戦略であると私が信じるものについて詳しく説明します。他にも良い戦略があると思われるので、誰か追加するものがあればコメントを残してください. これは非常に進行中の作業です。


ストラテジー

他の回答で提案されているように、サンプルコードから多くのことを学びましたが、サンプルが役に立たないのは PyQt5 の深い魔法です。多くの魔法を備えたフレームワーク (PyQt5、Django、SQLAlchemy など) は、膨大な量の単調な作業が抽象化されるため、優れています。反対に、一体何が起こっているのか、それに対して何をすべきなのかが常に明確であるとは限りません。

幸いなことに、オプションがあるようです。

  • QtDesigner : キーボードが発火した日のために、インストール パッケージで呼び出されるロックな GUI ビルダーがあります。これが生成するコードを見ると (おそらくコミュニティ バージョンだけでしょうか?)、これ万能薬ではない理由がわかります。

  • QML : 万能薬のもう 1 つの候補: フォーマットされた JSON からの宣言型 GUI 構築。うーん。

  • Qt Quick : QML のフレームワーク。この時点で、とても簡単に思えるかもしれませんが、まだこのようなことに夢中にならないでください。それは常に手で学ぶことになるようです。

  • モデル ビュー フレームワーク(1) : モデル ビュー (MVC ではない) は、モジュール性を提供する目的で、データを管理するコードからプレゼンテーション/相互作用を扱うコードを分離します。

PyQt5 でのコーディングは、Model-View デザイン パターンを実装する一連のクラスを使用することで大幅に簡素化されます。Model-View は Model-View-Controller (MVC) の進化形であり、Controller が View と再統合されています。彼らは奇妙な仲間のように見えますが、プログラムのロジックのほとんどは、ユーザーまたはデータのいずれか扱っています。少なくとも成層圏レベルでは、一定の意味があるようです。

鳥の目から:

アーキテクチャ

モデル ビュー コントローラー

この広く使用されている設計パターンは、アプリケーションを 3 つのレイヤーに分割します。

  1. モデル ~> データをカプセル化します。基になるデータへの変更をビューとコントローラーに通知します。これにより、出力または使用可能なコマンドの表示がそれぞれ更新されます。
  2. View ~> モデルからの関連する出力をユーザーに表示します。
  3. Controller ~> ユーザーの操作をカプセル化し、モデルとビューに関連するイベントを通知します。

モデルビュー

  • グラフィックス ビュー フレームワーク(1) ~> QGraphicsScene 内のすべて (埋め込まれた QWidgets などを含む) を、ウィジェットを埋め込むためのプロキシ クラスを含む QGraphicsItem (またはその派生物) として表します。アイテムはおそらく高度に最適化されており、OpenGL サポートを統合することはワンライナーです。これは素晴らしいことです。

この設計パターンは、コントローラーをビュー内に配置します。このようにして、ビューはユーザーの対話全体を処理できます。具体的には、シグナルとスロットのメカニズムです。

ユーザー インタラクション管理

コールバック

シグナルとスロット

..... ** 申し訳ありませんが、今すぐサインオフする必要があります。これに追加し続けるために戻ってきます。**

実用例

たとえば、例からツリー ビューを取得し、例からitemviews/editabletreemodelファイル システム モデル ( QFileSystemModel) を交換するitemviews/dirviewと、ディレクトリ ツリーの完全な (作業中の) ビューが得られます。かなりおしゃれ。

したがって、editabletreemodel の例からコードを取得します。

headers = ("Title", "Description")

file = QFile(':/default.txt')
file.open(QIODevice.ReadOnly)
model = TreeModel(headers, file.readAll())
file.close()

self.view.setModel(model)

...そして、dirview からモデルをスワップします。

model = QFileSystemModel()
model.setRootPath('')
self.view.setModel(model)

...そしてそれはうまくいきます。すばらしい。

次のステップ (私の場合) (*だと思います) は、カスタム モデルを実装して、複数のビューを同時に使用することですが、それがあなたのユース ケースに適合するかどうかはわかりません。

資力

旅先で見つけた逸品をご紹介します。うまくいけば、彼らはあなたを助けてくれます。

これは、Qt5 の Model-View に関するチュートリアルです。(1)これは、Qt5 の公式ドキュメントからの非常に詳細なドキュメントです。Qt5 サイトには、役立つドキュメントが多数あります。これはQt5(C++ライブラリ)用ですが、違いは読み通すのは簡単です(とにかくPyQt5の公式ドキュメントはそこを指しています)。

この PDF には、PyQt4 の Model-View フレームワークの概要が含まれています。これは PyQt4 (PyQt5 ではありません) 用ですが、実際には Python (C++ ではなく) 用であり、すぐに多くのことを学べました。

Graphics View を使い始めたばかりで、Graphics View Framework に関するこのチュートリアルが非常に役立つことがわかりました。qtdemoこれは、いくつかの洗練された効果を生成するためにサンプル コードで使用されているのと同じビューです。これを少し更新します。

これは、すべての Qt5 モジュールの完全なリストです。

これは、すべての Qt5 クラスの完全なリストです。

これは、Qt5 API のすべての関数の完全なリストです。

katsh が別の回答のコメントで指摘したように、GitHub の PyQt5.2.1 のサンプル コードへのリンクを次に示します。

さらに、サンプル コードのコピーがディストリビューションに同梱されており、次の場所にあります。

%PYTHON_HOME%\Lib\site-packages\PyQt5\examples

PyDev (Eclipse) を使用している場合は、PyDev Package Explorer または Navigator =:> Run As =:> Python Run でサンプルのメイン モジュール ファイルを右クリックするだけで、サンプルを実行できます。

私の(そうではない)謙虚な意見では、最高のものは次のとおりです。

%PYTHON_HOME%\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.py

現在のプロジェクトの中で、この例のリバース エンジニアリングを行っています。その理由は、調べてみればわかります。つづく.. ;)

楽しみ!

于 2014-07-10T09:32:10.500 に答える
29

しばらく PyQt5 チュートリアルを探していましたか? これ以上探さない!あなたはインターネットの周りで多くを見つけることができません.

チュートリアルではありませんが、次のパスの下にわかりやすい基本的なスクリプトがあります。

/python/lib/site-packages/PyQt5/examples

基本的なウィンドウ、メニュー、タブ、レイアウト、ネットワーク、OpenGL などをカバーする、初心者から上級者まで100のフォルダーの例について説明します。30

于 2014-01-26T02:57:00.607 に答える
8

http://www.thehackeruniversity.com/2014/01/23/pyqt5-beginner-tutorial/をご覧ください。これは初心者向けのチュートリアルです。

于 2014-01-24T07:45:15.030 に答える