PyQT の概要
1.Qt
1.1 はじめに
Qt (「キュート」と発音) は、もともとノルウェーの会社 Trolltech (現在は Qt Corporation の一部) によって開発されたクロスプラットフォーム C++ アプリケーション開発フレームワークです。Qt は、グラフィカル インターフェイス アプリケーション、コマンド ライン ツール、サーバーサイド アプリケーションを開発するための一連のツールとクラス ライブラリを提供しており、さまざまなオペレーティング システム上での移植性が高くなります。
以下は、Qt フレームワークの主な機能とコンポーネントの一部です。
-
クロスプラットフォーム: Qt の中核機能の 1 つは、クロスプラットフォーム機能です。開発者はコードを一度作成すると、Windows、macOS、Linux、一部の組み込みシステムなどのさまざまなオペレーティング システム上でコンパイルして実行できます。
-
グラフィカル インターフェイス デザイン: Qt は豊富なグラフィカル インターフェイス デザイン ツールを提供しており、開発者は、見たものがそのまま得られる (WYSIWYG) を使用してユーザー インターフェイスを作成できます。開発者は、Qt のグラフィカル インターフェイス デザイナーを使用してさまざまな UI 要素をドラッグして配置し、C++ コードを使用してロジック プログラミングを行うことができます。
-
シグナルとスロットのメカニズム: Qt には、シグナルとスロット (Signals and Slots) と呼ばれる独自の通信メカニズムが導入されています。このメカニズムにより、さまざまなコンポーネント間の対話がより柔軟になり、分離されるため、コードのメンテナンスと拡張が簡素化されます。
-
モジュール構造: Qt フレームワークは複数のモジュールで構成されており、各モジュールは GUI、ネットワーク、データベース、マルチメディア、XML 処理などのさまざまな機能領域に重点を置いています。開発者は、必要に応じてこれらのモジュールを選択して使用し、不要なコードの依存関係を回避できます。
-
自動メモリ管理: Qt では、オブジェクトのメモリ管理をより自動化できる「親子関係」と呼ばれる概念が導入されています。親オブジェクトが破棄されると、そのすべての子オブジェクトも自動的に破棄されるため、メモリ リークが回避されます。
-
国際化とローカリゼーションのサポート: Qt には強力な国際化とローカリゼーションのサポートがあり、開発者はアプリケーションをさまざまな言語や地域に簡単にローカライズできます。
-
商用およびオープン ソース エディション: Qt は商用ライセンスとオープン ソース ライセンスの両方で利用できます。開発者は、独自のニーズに応じて適切なライセンス タイプを選択できます。オープンソース バージョンでは、開発者は Qt を開発に無料で使用できますが、特定のオープンソース ライセンス条項に準拠する必要があります。
Qt は、デスクトップ アプリケーション、モバイル アプリケーション、組み込みシステム、ゲーム開発など、さまざまな分野で広く使用されています。Qt は、その移植性と強力な機能により、多くの開発者にとって推奨されるフレームワークの 1 つとなっています。
1.2 使用言語
- C++: C++ は Qt のネイティブ開発言語です。Qt は豊富な C++ クラス ライブラリとツールを提供し、開発者がクロスプラットフォームのグラフィカル インターフェイス アプリケーションを簡単に作成できるようにします。
- QML (Qt Meta-Object Language): QML は、グラフィカル インターフェイスのユーザー インターフェイス部分を作成するために使用される宣言型プログラミング言語です。インターフェイス要素のデザインとレイアウト、およびインターフェイスの相互作用に重点を置いています。QML は C++ と組み合わせて使用されることが多く、QML がインターフェイスを処理し、C++ がビジネス ロジックを処理します。
- Python: Qt for Python (PyQt) または PySide を使用すると、Python 言語を使用して Qt ライブラリを使用するアプリケーションを開発できます。これにより、Python 開発者は Qt の機能を活用してクロスプラットフォーム アプリケーションを構築できるようになります。
- JavaScript (QML 内): QML では、インターフェイスのロジックと対話を処理するために JavaScript が使用されます。これは従来の意味では Qt アプリケーションの主要な開発言語ではありませんが、QML インターフェイスでは重要な役割を果たします。
- その他の言語:上記の主要な言語に加えて、Qt には他の言語のバインディングとインターフェイスもあり、開発者はさまざまなプログラミング言語を使用して開発できます。これらの言語には、Java、Ruby、C# などが含まれる場合があります。
1.3 公式ウェブサイトのアドレス
https://doc.qt.io/qt-5/index.html
2.PyQt
2.1 はじめに
PyQt は、Python プログラミング言語の Qt ライブラリのバインディングです。これにより、開発者は Python を使用してグラフィカル インターフェイス アプリケーションを作成し、Qt フレームワークの機能を利用できるようになります。Qt 自体は C++ アプリケーション開発フレームワークであり、PyQt は Python 言語インターフェイスを提供するため、開発者は Python 環境で Qt 関数を簡単に使用できます。
ここでは PyQt について詳しく説明します。
特徴:
- クロスプラットフォームのサポート: Qt の特性に基づいて、PyQt はクロスプラットフォーム機能も備えており、Windows、macOS、Linux などの複数のオペレーティング システム上で実行できます。
- 豊富な UI コントロール: PyQt は豊富な UI コントロールを提供し、開発者がさまざまな複雑なユーザー インターフェイスを作成できるようにします。これらのコントロールには、ボタン、テキスト ボックス、リスト、テーブル、メニューなどが含まれます。
- シグナルとスロットのメカニズム:ネイティブ Qt と同様に、PyQt はシグナルとスロットのメカニズムをサポートしており、さまざまな部分間の通信と対話をより柔軟で分離したものにします。これは、PyQt におけるイベント処理と対話の中核です。
- QML サポート: Qt と同様に、PyQt もインターフェイスを作成するための QML 言語の使用をサポートしています。QML は、開発者が簡潔な構文を通じて複雑なユーザー インターフェイスを作成できる宣言型言語です。
- マルチメディアのサポート: PyQt は、オーディオとビデオの再生、録音、処理などのマルチメディア機能を提供します。これにより、開発者はマルチメディア要素をアプリケーションに統合できるようになります。
- 国際化とローカリゼーション: PyQt は国際化とローカリゼーションをサポートしており、開発者はアプリケーションをさまざまな言語や地域に簡単にローカライズできます。
2.2 関連アドレス
ドキュメント関連のアドレス: https://www.riverbankcomputing.com/software/pyqt/
良い参考資料: https://wiki.python.org/moin/PyQt/Tutorials
2.3 Python GUI 開発オプション
- トキンター:
- 概要: Python 標準ライブラリの GUI ツールキット。学習と使用が簡単で、シンプルなインターフェイスのニーズに適しています。
- 公式ウェブサイト: https://docs.python.org/3/library/tkinter.html
- PyQt:
- はじめに: Python の Qt ライブラリ バインディングは強力で、複雑なグラフィカル インターフェイス アプリケーションの作成に適しています。
- 公式ウェブサイト:https://riverbankcomputing.com/software/pyqt
- PyGTK:
- はじめに: Python の GTK+ ライブラリ バインディングは Linux および Unix システムに適しており、豊富なコントロールと機能を提供します。
- 公式サイト:https://pygtk.org/
- wxPython:
- 概要: Python 用の wxWidgets ライブラリ バインディング。複数のオペレーティング システムに適しており、ネイティブなルック アンド フィールを備えています。
- 公式サイト:https://wxpython.org/
- 絶望的な:
- 概要: モバイル アプリケーションやタッチ スクリーン インターフェイスに適した、マルチタッチ アプリケーションを作成するための Python ライブラリ。
- 公式サイト:https://kivy.org/
- パイサイド:
- 概要: 強力なクロスプラットフォーム GUI アプリケーションを作成するための、Qt ライブラリの別の Python バインディング。
- 公式ウェブサイト:https://wiki.qt.io/PySide
- FLTK:
- 概要: C++ グラフィック ライブラリ FLTK の Python バインディング。シンプルなユーザー インターフェイスを必要とするアプリケーションに適しています。
- 公式サイト:https://www.fltk.org/
- PyGui 様:
- 概要: データ視覚化および科学アプリケーション向けの GPU レンダリングをサポートする最新の Python GUI フレームワーク。
- 公式サイト:https://dearpygui.org/
- ビーウェア:
- 概要: Toga やその他のツールを含む、Python でクロスプラットフォーム アプリケーションを作成できるようにするツールとライブラリのセット。
- 公式サイト:https://beeware.org/
設置方法
1.PyCharmのインストール方法
pycharm が管理者権限で開かれていることを確認してください
1.1 新しい Python プロジェクトを作成する
プロジェクトツールのチェック
1.2 pyQT5のインストール
pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple
1.3 pip ミラーソース
Alibaba Cloud https://mirrors.aliyun.com/pypi/simple/
中国科学技術大学 https://pypi.mirrors.ustc,edu.cn/simple/Douban
https://pypi.douban.com/ simple/
清華大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技術大学 https://pypi.mirrors.ustc.edu.cn/simple/
1.4 コンピュータの pip イメージ ソースを変更する
(1) C:\Users\管理者名フォルダにpipフォルダを作成
(2) pip.iniファイルを作成する
(3) 次のコードをコピーして pip.ini ファイルに貼り付けます。
[global]
timeout=40
index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
extra-index-url=
http://mirrors.aliyun.com/pypi/simple/
http://pypi.douban.com/simple
http://pypi.mirrors.ustc.edu.cn/simple/
[install]
trusted-host=
pypi.tuna.tsinghua.edu.cn
mirrors.aliyun.com
pypi.douban.com
pypi.mirrors.ustc.edu.cn
(4) pip 設定が正しいことを確認します。
pip install list
PyQT の最初のケース
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
# 1. 创建QT对象
# sys.argv : python运行参数
app = QApplication(sys.argv)
# 创建一个控件对象
w = QWidget()
# 给控件设置标题
w.setWindowTitle("第一个程序案例")
# 显示控件
w.show()
# 开启一个QT程序
app.exec_()
1. pyqtモジュールの紹介
PyQt5 は、クロスプラットフォームのグラフィカル インターフェイス アプリケーションを作成するための豊富な機能とツールを提供する Python 用の Qt ライブラリ バインディングです。PyQt5 は複数のモジュールに分割されており、それぞれが異なる機能領域に焦点を当てています。ここでは、PyQt5 の主要モジュールのいくつかを簡単に紹介します。
- QtCore:!!重要!!
- イベントループ、タイマー、スレッド、シグナル、スロットなどのQtコアの非GUI機能を提供します。
- これは、GUI に依存しないタスクを処理するために使用され、他のモジュールの基礎となります。
- QtGui:!!重要!!
- 描画、色、フォント、ウィンドウ管理、クリップボードなど、GUI 関連のクラスが多数含まれています。
- グラフィカル インターフェイスの作成に必要な基本的なコンポーネントと機能を提供します。
- QtWidgets:!! 重要!!
- ボタン、テキスト ボックス、ラベル、テーブル、リスト、ウィンドウなどのさまざまな UI コントロールが含まれています。
- ユーザーインターフェイスを作成するためのさまざまな要素。
- Qtマルチメディア:
- オーディオやビデオの再生、録音、処理などのマルチメディア機能を提供します。
- アプリケーションにマルチメディア要素を統合できるようにします。
- Qtネットワーク:
- ネットワーク プログラミングの場合、TCP、UDP、HTTP などのネットワーク プロトコルのサポートを提供します。
- アプリケーションがリモート サーバーと通信できるようにします。
- QtSQL:
- さまざまなデータベースと対話できるデータベース アクセス クラスを提供します。
- アプリケーションがデータベースのクエリ、挿入、更新などの操作を実行できるようにします。
- QtXml:
- XML ファイルの読み取り、書き込み、操作のために XML データを処理するためのクラスを提供します。
- 構造化データを処理する必要があるアプリケーションに適しています。
- QtWebエンジン:
- アプリケーションに Web ページを埋め込むことができる Web エンジン機能を提供します。
- 組み込みブラウザ機能の作成に使用できます。
- QtPrintサポート:
- アプリケーションのコンテンツをプリンターに出力するための印刷サポートが提供されています。
- QtOpenGL:
- OpenGL 統合が提供され、アプリケーションでの 3D グラフィックスとレンダリングが可能になります。
- Qtテスト:
- 単体テストのサポートは、アプリケーションのさまざまな部分をテストするために提供されます。
1.2 参照アドレス
PyQt 公式 Web サイトですべてのモジュールのアドレスを参照できます: https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.htmlfref-module-index
C++ 固有の実装に関する API ドキュメント、アドレス: https://doc.qt.io/gt-5/qtwidgets-module.html