PythonでPDF結合GUIを作る その３

最終回その3です

　[その1　TkinterでUI作成](https://qiita.com/you3feet/items/ba4f0c05d236101fe44d)
　[その2　PyPDF2でPDF操作](https://qiita.com/you3feet/items/ac734d8e7a52a20b8eb9)
　**その3　pyinstallerでexe化＋アイコンを付ける**

# アイコンを探す
フリーのアイコンを[iconfinder](https://www.iconfinder.com/)で探します
python（ガラガラヘビ）というよりcobra（コブラ）？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447145/5873ba4d-cd27-e612-3066-e41528b46b0e.png)

# アイコンをウィンドウに埋め込み
下の▼を押すとpngのbase64 encodeが表示されるのでコピーして以下の通りコードに埋め込みます
（横に長くてすいません）

```python
#アイコンpngファイルのbase64エンコード
data = '''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
     ''' 

root.tk.call('wm', 'iconphoto', root._w, tkinter.PhotoImage(data=data))
```
できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447145/0391ce1e-2988-cd9e-d578-fec0fa691836.png)

#pyinstallerでexeファイル作成
pythonがない環境でも動かせるようにexe化
　・アイコンファイルMergerIcon.icoを.pyファイルと同じフォルダにいれておきます
　・コンソールで以下のように記述

```console
pyinstaller --onefile --noconsole --icon=MergerIcon.ico PDFMerger_01_qiita.py 
```
distフォルダにexeファイルができました！
ファイルサイズが8M以上もあるのは何故？！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447145/c26f9334-eadc-47e2-4262-a8e3c01bf694.png)

# 参考
https://qiita.com/Dr_Thomas/items/f3b2eff79cba10eb42a3

# まとめ
稚拙なコード・投稿記事をご覧いただきありがとうございました。
次はPDFの電子署名ツール（シャチハタ代わり）について投稿予定です。