［CGデザイナー向け］とりあえずPySide2が触りたいんじゃ！というときに見るやつ

##はじめに##
最近Python触るようになってきたのはいいけども、CGソフトの中だけだし。。
それ以外のところでもちょっと使ってみたい！というときに色んなサイトを検索すると、仮想環境を整え終わった前提での記事などが多く見受けられたので、PythonやPySideをいれるところで苦労したり挫折してしまいます。
「とにかく難しいことはええから、とりあえずPySide2が触りたいんじゃ！」

というわけで、自分なりにPySideのサンプルを起動できるまでを備忘録程度に書いていきます。

##環境と使用ソフト##
・Windows 10
・Visual Studio Code (以下、VS Code)
・Scoop

##手順##
1　VS Codeをインストール
2　ScoopでPythonをインストール
3　Pythonの仮想環境を作成
4　PySide2をインストール、サンプルを作成して起動
5　実行バッチを作成

以上が手順になります。

~~他PCでも使えるように、フォルダごとコピーしてバッチを走らせればサンプルが起動できるようにしています。~~
###追記###
他PCで使用するためには、コピーしてもっていくだけでは機能しないようです。。
以下の記事を参考に、「Python embeddable」を使用するのが良いと思います。
https://qiita.com/mm_sys/items/1fd3a50a930dac3db299
https://qiita.com/rhene/items/68941aced93ccc9c3071

##1　VS Codeをインストール##

https://azure.microsoft.com/ja-jp/products/visual-studio-code/

上記サイトのDownload nowからwindows版をダウンロード。

ダウンロードしたexeを開いて、何も考えず「次へ」を押していきインストール。

[こちら](https://www.javadrive.jp/vscode/install/index4.html)のサイトを参考にVS Codeを日本語化します。

view＞Coomand Paletteを選択
![2021-08-14_22h23_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/cf5edff4-b5ab-ba5e-86e3-aeac02452935.png)
「display」と入力すると、「Configure Display Language」と表示されるのでクリックします。
![2021-08-14_22h25_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/737af6ec-6a67-8c36-0755-e6f57a77e566.png)

すると、enのみの表示になっているため、
 Install additional langages をクリックします。

![2021-08-14_22h26_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/dd652574-953b-13db-9342-c6680ade4af4.png)
すると、拡張機能の一覧が表示されますので「Japanese Language Pack for Visual Studio Code」をクリックし、Installをクリックすると、画面右下に「Restart」がでてくるのでクリックして再起動します。

![2021-08-14_22h34_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/1ce0770e-48ce-95be-52a4-2e4ed2638b97.png)

![2021-08-14_22h35_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/0350ee58-1917-afc2-304b-b3e7b4fabf86.png)

これで日本語化できました。

![2021-08-14_22h38_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/4f60f670-3f21-7ad4-107b-b9263f49b8fc.png)


##2　ScoopでPythonをインストール##

まずは、Scoopをインストールします。

Windows PowerShellを起動。
下記のコマンドを入力して実行します。

```
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
```

以下のメッセージが表示されるので Y を入力。


```
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"):
```

以下のメッセージが出れば、Scoopのインストールは完了です。

```
Initializing...
Downloading scoop...
Extracting...
Creating shim...
Downloading main bucket...
Extracting...
'lastupdate' has been set to '2021-08-14T15:44:08.4191105+09:00'
Scoop was installed successfully!
Type 'scoop help' for instructions.
```

続いては、先ほどインストールしたScoopを使用してPythonをインストールしていきます。

コマンドプロンプトを起動して、以下のコマンドを入力して実行します。

```
scoop install python
```

するとpythonのインストールが始まります。

```
'python' (3.9.6) was installed successfully!
```

上記の文言がでました。
どうやらpythonの3.9.6がインストールされたようです。
pythonは以下にインストールされているはずです。

C:\Users\ユーザー名\scoop\apps\python\3.9.6

![2021-08-14_18h27_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/b748f9c8-bc5d-96d6-ff16-6c6831474129.png)


これでpythonのインストールは完了です。

Scoopに関して詳しくは、@rheneさんが纏めてくださっています。詳しくは[こちら](https://qiita.com/rhene/items/d8a0c0c7d637904e14da)に書かれています。

##3　Pythonの仮想環境を作成##


まず、好きな場所に仮想環境を構築するフォルダを作成します。

このフォルダ内にpythonを扱う環境を作成します。
このフォルダ内で完結できるので他のPCにフォルダごとコピーすれば起動できるといったイメージです。

D:\PySideTest
今回は上記にフォルダを作成しました。

作成フォルダのアドレスバーに「cmd」と入力して実行します。
![2021-08-14_16h54_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/e4d805be-08b1-a944-700c-7e7a00ca903e.png)

すると、カレントディレクトリが作成したフォルダになっている状態でコマンドプロンプトが起動します。

コマンドプロンプトに以下のコマンドを入力します。

```
%userprofile%\scoop\apps\python\3.9.6\python -m venv python39
```
【コード解説】
・%userprofile%\scoop\apps\python\3.9.6\python 
ここで先ほどインストールしたpythonを指定しています。
他のバージョンが入っている場合は、「3.9.6」の部分をインストールしたバージョンにします。
・-m venv python39
この部分は「python39」という環境フォルダをvenvでつくるという指示をだしています。
venvは、pythonに入っている仮想環境を作成するモジュールです。


これで環境は作成されました。

続いては、VS Codeで作業できる環境を作っていきます。
VS Codeを起動します。

ファイル＞フォルダを開く
から先ほどの「PySideTest」フォルダを選択します。

エクスプローラータブの上で右クリックし、新しいファイルを作成します。
![2021-08-14_17h14_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/84a4e416-7c83-6cb3-4272-aaff8d84449e.png)

今回は「main.py」という名前で作成しました。

すると画面右下にダイアログが出てきますので、ダイアログの「Select Python Interpreter」をクリックします。
![2021-08-14_17h18_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/18bf614b-71f1-d17f-ece6-86ed256c7271.png)

:::note warn
注意
お勧めの拡張機能をインストールするかのダイアログが出てきた際は、ダイアログの指示に従ってインストールしてください。
恐らくPythonの拡張機能だと思うので、インストールした後は画面左下を確認して、Pythonが認識されているか確認してください。
:::


すると、どのpython.exeを使うか聞いてくるので、先ほど作った環境フォルダ内にある「python.exe」を選択します。
![2021-08-14_17h18_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/6902b9b4-cd60-733b-c1c7-30fe51ca7b9b.png)

画面左下の表示が以下の画像のようになれば、成功です。
![2021-08-14_17h23_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/1f679366-d126-59d3-a8aa-36eb29eb585b.png)

main.pyで以下のコマンドを入力してみます。

```
print("Hello World")
```
そして、右上の緑の再生ボタンをクリックして実行してみます。
![2021-08-14_17h34_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/47e989b1-400b-0257-1902-db977fe84f85.png)

「Hello World」がコンソールに表示されると成功です。
コンソールの表示も緑で(python39)との表示がでているので、しっかりと環境構築したpythonから実行してくれているようです。


##4　PySide2をインストール、サンプルを作成して起動##

PySide2をインストールしていきます。

ターミナル＞新しいターミナル
で新しくターミナルを立ち上げます。

![2021-08-14_17h41_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/31089985-68f2-28d0-2b1c-0a4ea44f2cb3.png)

立ち上げたターミナルで以下のコマンドを入力して実行します。

```
pip install PySide2
```

![2021-08-14_17h44_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/166e4d78-1d34-6549-4a26-7260c13d6dce.png)
PySide2がインストールされました。

Pythonを検索する際によくでてくる「pip install」はここで使います。
これで色んなモジュールがインストール出来るようになりました。
他にも検索すると便利なモジュールがたくさんあるので、探してみてください。


サンプルコードを持ってきます。
[こちら](https://doc-snapshots.qt.io/qtforpython-5.15/tutorials/basictutorial/dialog.html)の公式サイトからサンプルをコピーします。
コピーしてきたのが、以下です。

```py
import sys
from PySide2.QtWidgets import QApplication, QDialog, QLineEdit, QPushButton

class Form(QDialog):

    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.setWindowTitle("My Form")


if __name__ == '__main__':
    # Create the Qt Application
    app = QApplication(sys.argv)
    # Create and show the form
    form = Form()
    form.show()
    # Run the main Qt loop
    sys.exit(app.exec_())
```
コピーしたコードを、先ほどの「main.py」にペーストして、実行してみます。

![2021-08-14_17h56_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/8696e6da-e86b-a952-d2ad-ea4e40fc4964.png)

「My Form」というウィンドウが立ち上がると成功です。

##5　実行バッチを作成##


VS Codeを開かなくても起動できるようにバッチを作成します。

新しいテキストドキュメントをフォルダ内に作成します。

今回は「Run.cmd」という名前で作成しました。

![2021-08-14_18h01_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/d6c61e65-79c5-741f-f698-392a284f6527.png)

作成したバッチファイルを右クリックして、「編集」をクリックして開きます。

以下のコマンドを入力して保存します。

```
cd /d %~dp0
python39\Scripts\python.exe main.py
```
【コード解説】
・cd /d %~dp0
カレントディレクトリを、現在実行しているファイルのあるフォルダへと移動させています。
詳しい解説は[こちら](https://a-zs.net/inuwaka-batch-01/)を参照ください。
・python39\Scripts\python.exe main.py
仮想環境内のpythonを使用して、カレントディレクトリ内の「main.py」を起動させています。

保存したバッチファイルをクリックして起動してみます。
![2021-08-14_18h16_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1491962/e93db76f-21b1-7b0b-aaff-0aae22b00ceb.png)

My Form というウィンドウが立ち上がりました、成功です。
お疲れ様でした！！！

##最後に##

中身はすっからかんですが、PySide2のスタンドアローンなウィンドウが立ち上がりました。
ググると色々なPySide2のサンプルファイルや色んなモジュールがあります。
中身はググって試行錯誤し、自分だけのオリジナルのツールを開発して楽しんでください！

##参考##

[Scoopを使った環境構築](https://qiita.com/rhene/items/d8a0c0c7d637904e14da)
[Windowsで環境を極力汚さずにPythonを動かす方法 (Scoop編)](https://qiita.com/rhene/items/a5616857981293d06940)
[VS CodeでWorkspace毎に使用するPython実行環境を切り替える](https://logixsquare.com/techblog/visual-studio-code-python-version-settings/#venv_setting)
[VS Codeの拡張機能でPythonの仮想環境構築からコード整形、Lintまでを体験してみよう](https://atmarkit.itmedia.co.jp/ait/articles/2106/25/news028.html)