web-dev-qa-db-ja.com

PyQt5専用のチュートリアルはありますか?

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

これまでにいくつかのPyQt4チュートリアルのみを見つけましたが、Qt4からQt5に何かが変更されたため、たとえばSIGNALSLOTはQt5ではサポートされなくなりました。 PyQt5の場合。

誰かがPyQt5でGUI開発を開始する方法に関するチュートリアルを提供できますか?

62
WeGi

私のPyQt5の深部への旅が続くので、私が見つけたより輝く宝物のいくつかでこの答えを更新し続けなければなりません。

そうは言っても、私は今、PyQt5の簡単なイントロで「ラフドラフト」刺しを取っています。役立つリソースへのリンクも提供します。私もこのフレームワークに慣れていないので、この戦略を理解する上で、このフレームワークを使用するのに適した戦略であると思われるものについて詳しく説明します。他にも良い戦略がある可能性が高いので、追加するものがあれば、コメントを残してください。これは非常に進行中の作業です。


戦略

他の回答で示唆されているように、サンプルコードから多くを学びましたが、サンプルが役に立たないのはPyQt5の深い魔法です。たくさんの魔法を備えたフレームワーク(PyQt5、Django、SQLAlchemyなど)は、膨大な量の骨の折れる作業があなたから引き離されるので素晴らしいです。反対に、地獄が何をしているのか、またはあなたがそれに対して何をすべきなのかは必ずしも明確ではありません。

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

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

  • [〜#〜] qml [〜#〜] :別の万能薬の候補:フォーマット済みJSONからの宣言型GUI構築。うん.

  • Qt Quick :QMLのフレームワーク。この時点で、それは食欲をそそるほど簡単に思えるかもしれませんが、このようなものにまだ吸い込まれないでください。 それは常に手で学習することになりそうです。

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

Model-View design patternを実装するクラスのセットを使用することで、PyQt5のコーディングが大幅に簡素化されます。 Model-ViewはModel-View-Controller(MVC)の進化版であり、Controllerはビューと再結合されています。奇妙な仲間のように見えますが、プログラムのロジックのほとんどisはユーザーまたはデータのいずれかを処理します。少なくとも成層圏レベルでは、ある程度の意味があるようです。

鳥瞰図から:

アーキテクチャ

Model-View-Controller

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

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

Model-View

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

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

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

コールバック

信号とスロット

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

実用例

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

したがって、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++とは対照的に)、私は非常に迅速に多くのことを学びました。

私はグラフィックスビューで遊び始めたばかりで、 グラフィックスビューフレームワークに関するこのチュートリアル とても役に立ちました。これは、いくつかの滑らかな効果を生成するためにqtdemoサンプルコードで使用されるビューと同じです。これを少し更新します。

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

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

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

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

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

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

PyDev(Eclipse)を使用している場合、PyDevパッケージエクスプローラーまたはナビゲーターでサンプルのメインモジュールファイルを右クリックするだけでサンプルを実行できます==> Run As =:> Python Run

私の(それほどではない)謙虚な意見では、最高のものは:

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

現在のプロジェクトの中で、私はこの例をリバースエンジニアリングしているところです。確認すると、その理由がわかります。つづく.. ;)

楽しい!

71
Inversus

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

本当にチュートリアルではありませんが、次のパスでかなり一目瞭然の基本的なスクリプト

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

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

28
Pete

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

8
user1801060