20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PySide2をゼロから学んでいく~#0 環境構築~

Last updated at Posted at 2021-03-31

はじめに

PythonでGUI開発をするためのライブラリ「PySide2」の基本的な使い方を、いくつかの段階に分けて説明していきます。

当ページではPySide2のインストール手順について説明しております。

開発環境

以下の通りになります。

  • Windows 10
  • Python 3.8 以降

サクッとPySide2について

GUIツールキットの一種である「Qt 5」をPythonでも使用できるようにしたライブラリのことです。

端的言えば「PythonでもQt 5を使ってGUI開発ができるライブラリ」のことです。

PyQt 5と何が違うの?

ライセンスが違います。
ザックリと説明も載せておきます。

ライセンスについて私は詳しくないので、詳しく知りたい方は各々で調べてください。
以下のライセンス説明を真に受けて大事にならないように・・・

GUIツール名 ライセンス ライセンスの違い
PyQt5 GPL 商用で利用する場合、ソースコードを公開しないといけない
PySide2 LGPL 商用でも、条件さえ満たせばソースコードを公開する必要がない

会社などのソフト開発をする上で、企業秘密であるソースコードは絶対知られたくないと思います。

「でもPythonとQtを使って開発をしたい。。。」

この考えを実現できるのがPySide2って訳です。

PySide2の環境構築手順

前提としてPython3を事前にインストールしてください
Python3がインストールされているなら、あとは簡単です。

Python3のインストール手順はネット上に腐るほどありますので、このページでは省略します。
バージョン切り替え方法も載せているページがありましたので、一応参考例としてURLを載せておきます。

PySide2のインストール

ではPySide2のインストール手順を説明します。

  • Powershell または コマンドプロンプト を起動します。
  • 起動後、pip コマンドでPySide2をインストールします。
pip install PySide2

これだけです。

Qtプラットフォーム・プラグインのパスを通す

次に「Qtプラットフォーム・プラグインの場所」をWindowsが認識できるようにする必要があります。

要するに「環境変数のパスを通す」ことです。
これをやらないとPySide2をインポートできても、ウィジェットの表示ができなくなります。

以下の環境変数のパスを通します。

環境変数名
QT_PLUGIN_PATH C:\Users\<ユーザ名>\AppData\Local\Programs\Python\\Python<バージョン番号>\lib\site-packages\PySide2\plugins
QT_QPA_PLATFORM_PLUGIN_PATH C:\Users\<ユーザ名>\AppData\Local\Programs\Python\\Python<バージョン番号>\lib\site-packages\PySide2\plugins\platforms

赤文字はお使いのPCやPythonバージョンごとに異なるので注意してください。

例えば以下のような感じ。

  • QT_PLUGIN_PATH
    C:\Users\karak\AppData\Local\Programs\Python\Python38\Lib\site-packages\PySide2\plugins
【旧バージョン】2021年4月時点のPySide2の環境変数の登録方法
環境変数名
QT_PLUGIN_PATH C:\Users\<ユーザ名>\AppData\Local\Programs\Python\\Python<バージョン番号>\Lib\site-packages\PyQt5\Qt\plugins
QT_QPA_PLATFORM_PLUGIN_PATH
この変数は必要ないかも
C:\Users\<ユーザ名>\AppData\Local\Programs\Python\\Python<バージョン番号>\Lib\site-packages\PyQt5\Qt\plugins\platforms

赤文字はお使いのPCやPythonバージョンごとに異なるので注意してください。

例えば以下のような感じ。

  • QT_PLUGIN_PATH
    C:\Users\からくり\AppData\Local\Programs\Python\Python38\Lib\site-packages\PyQt5\Qt\plugins

環境変数の登録方法を2通り提示します。
① Windowsの環境変数に直接登録する
② Pythonプログラムの実行中だけ環境変数を登録する

両方設定したとしても問題ありませんので、気にせずバシッとやっちゃってください。

環境変数の登録方法 ①Windowsの環境変数に直接登録する

このシリーズではこちらの方法を取ります。

  • スタートキーを押して「kannkyou」で検索します。
    000.png

  • 「<ユーザ名>のユーザー環境変数(U)」→「新規(N)...」をクリックします。
    001.png

  • 環境変数QT_PLUGIN_PATHQT_QPA_PLATFORM_PLUGIN_PATHを登録します。
    002.png

  • あとは「OK」を押していけば環境構築は完了です。

環境変数の登録方法 ②Pythonプログラムの実行中だけ環境変数を登録する

プログラムに以下の処理を追加します。
こっちの方が簡単だと思います。

import PySide2
import os

# PySide2がインストールされているフォルダ名を取得
dirname = os.path.dirname(PySide2.__file__)
# PySide2のライブラリ下にある「plugins」フォルダと「platforms」フォルダの絶対パスを取得
plugin_path = os.path.join(dirname, 'plugins', 'platforms')
# プログラムの実行中だけ変数「plugin_path」のパスを通す
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path

動作確認

試しにボタンを表示するプログラムを作ってみました。

# ①Windowsの環境変数に直接登録する だけしか設定していない場合
from PySide2 import QtWidgets

app = QtWidgets.QApplication()
button = QtWidgets.QPushButton("Hello World!!")
button.show()
app.exec_()

これを実行して、以下が表示できれば環境構築は成功です。

003.png

ちなみに「②Pythonプログラムの実行中だけ環境変数を登録する」で環境変数を設定する場合、プログラムは以下のようになります。

import PySide2
from PySide2 import QtWidgets
import os

# PySide2がインストールされているフォルダ名を取得
dirname = os.path.dirname(PySide2.__file__)
# PySide2のライブラリ下にある「plugins」フォルダと「platforms」フォルダの絶対パスを取得
plugin_path = os.path.join(dirname, 'plugins', 'platforms')
# プログラムの実行中だけ変数「plugin_path」のパスを通す
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path

app = QtWidgets.QApplication()
button = QtWidgets.QPushButton("Hello World!!")
button.show()
app.exec_()
20
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?