PyQt5とpython3によるGUIプログラミング［０］

なぜPyQt4ではなくPyQt5であり、python2.Xではなくpython3.Xなのか、そもそも、元となるQtがすでにQt4のサポートをしていません。
そして、Pythonは今後2.7以降のバージョンをリリースせず、２０１９年にはサポートを終了すると発表しています。
であれば、進む道はPyQt5であり、python3.Xに必然的に到達するわけです。
とりあえず、MacとWindowsのインストール方法をここに記載しておきます。
これではできない等あれば、連絡いただければと思います。

私の願いとすれば、このUIが日本でメジャーになっていくことです。
知り得た情報は惜しみなくここに流していきます。

#PyQt5インストール（Mac編）

■Qtのオープンソースをインストール
http://www.qt.io/download-open-source/
より最新版をダウンロードする

■pythonのインストール
Homebrewとpyenvのインストール方法は以下のページを参考に設定してください。
virtualenvは必須ではありません。
http://qiita.com/ms-rock/items/6e4498a5963f3d9c4a67

SIPのインストール
PyQtのサイトからSIPをダウンロードします。
展開した場所にターミナルで移動して以下のコマンドを実行します。

```txt:
Python3 configure.py　
make
make install
```
PyQt5のインストール
PyQtのサイトからPyQt5をダウンロードして展開します。
展開した場所にターミナルで移動して以下のコマンドを実行します。

```txt:
Python3 configure.py
make
make install
```
qmakeを聞いてくるようなら以下のようにQtの場所を指定してあげましょう。
python configure.py --qmake /usr/local/Cellar/qt5/5.6.1/bin/qmake
これでインストールが完了するはずです。

コンパイルには結構な時間がかかります。

■後、sipをアップデートしてPyQt5をインストール
これをして
python3 -m pip install --upgrade pip
これをする
pip install PyQt5
または
pip３ install PyQt5

それでもうまくいかない場合
------------------------------------------------------------------
それでもうまくいかない場合
Homebrewをインストールしましょう。
コマンドラインで以下を実行します。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

そしてこれです。
#brew install pyqt5
------------------------------------------------------------------


■起動確認
pythonシェルにて以下を入力
import PyQt5.QtWidgets
エラーがなければインストール成功です。

■Qt Designerの起動
Qtのものを起動します。
例えば私の環境では以下のものを実行します。
/Users/[ユーザ名]/Qt/5.7/clang_64/bin/Designer.app

#PyQt5インストール（Windows編）
ちょっと見なかったらMacのインストールより面倒なことになっています。

■Qtのオープンソースをインストール
http://www.qt.io/download-open-source/
より最新版をダウンロードする。
注意：ダウンロードボタンを押すと32bit版になってしまいます。
Download Nowボタンの下にある
Not the download package you need? Hide All Downloads
をクリックして自分の環境にあったものを選びましょう。Windows Hostの物件を選ぶことを薦めます。
オンラインを選ぶとかなり時間がかかります。

■pythonインストール
https://www.python.org/

~~python.orgよりPython 3.5.1をインストールします。~~
python.orgよりPython 3.5.2をインストールします。
注意：Customize installationを選ばないと意図しないところにインストールされます。
インストールが完了したら環境設定でPathを通します。

■sipのインストール
コマンドラインで以下を実行します。
pip3 install SIP

注意：You are using pip version 8.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
こんなメッセージが出るかも知れませんが、そのときはメッセージの通り以下を実行します。
python -m pip install --upgrade pip

■PyQt5のインストール
コマンドラインで以下を実行します。
pip3 install PyQt5

~~上記よりWindows用のインストーラをダウンロードしてインストールします。
インストーラがpythonのインストールされているディレクトリを探しますので
そのままインストールします。~~
こんなメッセージが出れば成功です。
「Successfully installed PyQt5-5.7」

■起動確認

pythonシェルにて以下を入力

import PyQt5.QtWidgets

エラーがなければインストール成功です。

■Qt Designerの起動
Qtのものを起動します。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/124460/4390b9ab-0097-9f3e-a804-0cb353cb15d5.png)

※Qt Designerがdll不足で起動しない場合、MicroSoftのVisualStudioをインストール
する必要があるかもしれません。


■結論
インストールは、windowsのほうがかなり面倒になっています。

#インストール番外編(wheelを使ってPyQt5をインストールする)
例えば、会社でPyQt5を使いたいけど、プロキシの関係でネット経由でpipが使えないとか、使いたいマシンがそもそもネットと疎通がないとかの場合、これまで書いた方法ではインストールを諦めることになります。
でも、pipをオフラインで使うことを前提にwheel形式のバイナリをPyPiからダウンロードしてしまえば、PyQt5のインストールは可能です。
wheelが何かここでは説明を割愛します。意味は検索すれば出てきますので、そちらを参照してください。

その方法としては、
①sipのバイナリをダウンロード、pipでインストール
②PyGt5のバイナリをダウンロード、pipでインストール
上記でインストールができます。

以下はpython3.6.5を例にします。
以下にアクセスし,Download filesのリンクをクリックし、自分の環境にあったファイルをダウンロードします。
https://pypi.org/project/PyQt5-sip/
<img width="1725" alt="スクリーンショット 2018-12-22 12.13.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/124460/a35a8c2a-242c-29b0-3ab9-2a3573beeaaa.png">
<img width="1725" alt="スクリーンショット 2018-12-22 12.11.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/124460/88432cc6-4c25-df48-a46a-8a2145deabc4.png">
以下にアクセスし、Download filesのリンクをクリックし、自分の環境にあったファイルをダウンロードします。
https://pypi.org/project/PyQt5/
<img width="1725" alt="スクリーンショット 2018-12-22 12.15.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/124460/e7880cbf-9ee4-86d1-f3bf-bf2d56a4a6c3.png">
<img width="1681" alt="スクリーンショット 2018-12-22 12.16.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/124460/afc7fd1c-5291-cf98-669b-dd644cebd43b.png">

pipのコマンドはWindows10の場合を例にします。基本は他のOSでも同じです。
pipにpathが通してある前提です。
wheelファイルがD:\tmp\ wheelhouseにあるとして、以下のコマンドを実行します。

```txt:
pip install --use-wheel --no-index --find-links=wheelhouse D:\tmp\wheelhouse\PyQt5_sip-4.19.13-cp36-none-win_amd64.whl

pip install --use-wheel --no-index --find-links=wheelhouse D:\tmp\wheelhouse\PyQt5-5.11.3-5.11.2-cp35.cp36.cp37.cp38-none-win_amd64.whl
```
これでインストール完了です。
![cmd.png](https://qiita-image-store.s3.amazonaws.com/0/124460/c808d9a0-9067-a519-93f5-5334bf3dc479.png)
ちなみに、python3.7の場合は「--use-wheel」を削除してください。
そんなオプションはないとエラーになってしまうので。

一言「勝手に変えんなよ！！」と言いたい。

上記の手順はanacondaの場合も有効です。

#ただで最高のコードを手に入れる
結構このことを知らない人がいるので追記します。
PyQt5をインストールするために展開したディレクトリにはお宝が含まれています。
何もせずに削除したりしたらもったいないのです。
Macの場合「examples」があるはずです。
windowsの場合は、PyQt5_gpl-5.7.zipを展開すればその中に「examples」があるはずです。
これを大事なフォルダに保存しましょう。
これを実行し解析しさらなる高みを目指しましょう。


<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-84964934-1', 'auto');
  ga('send', 'pageview');

</script>