PythonのスクリプトにGUIをつける方法

 PythonのスクリプトにGUIをつける方法

みんなのPython勉強会#55( https://startpython.connpass.com/event/169696/ )でのスライドです

紹介しているライブラリーとデモ、説明リスト
Eel: https://github.com/samuelhwilliams/Eel
デモ(@Sakaki333): https://www.sakaki333.com/blog/view/79
Eelで作ってみる WHOISアプリと スライド(@attakai): https://speakerdeck.com/attakei/eeldezuo-tutemiru-whoisapurito-suraido

PySimpleGUI: https://pysimplegui.readthedocs.io/en/latest/
デモで使ったアルゴリズム:https://pysimplegui.readthedocs.io/en/latest/
デモ: https://github.com/okajun35/for_pycon_shizu/tree/master/example/08_asci_art
Tkinterを使うのであればPySimpleGUIを使ってみたらという話: https://qiita.com/dario_okazaki/items/656de21cab5c81cabe59
Pythonでデスクトップアプリを簡単に作る方法: https://speakerdeck.com/okajun35/pythondedesukutotupuapuriwojian-dan-nizuo-rufang-fa

Pyinstaller: https://www.pyinstaller.org/

Fed4c6cfec7502b771e12f08f8d5ec6d?s=128

Jun okazaki

March 11, 2020
Tweet

Transcript

  1. Pythonのスクリプトに GUIをつける方法 2020年3月11日 オカザキ みんなのPython勉強会#55 1

  2. 自己紹介 • オカザキ(@dario_okazaki) • 所属:(株)スカラコミュニケーション ズ • 職業:サーバーサイドエンジニア • 趣味でPythonのGUIライブラリを調べてい

    ます 2
  3. 今日話す内容 • Pythonでデスクトップアプリ(GUI)を使う上での お勧めのライブラリを紹介します • ライブラリの詳しい使い方は説明しません 3

  4. 今日の話の対象者 • Stapyということでプログラム初心者を対象としています 4

  5. 今日紹介するライブラリ •Eel •PySimpleGUI •PyInstaller 5

  6. よく見る質問 • Q: Pythoでデスクトップアプリを使う場合は どれがいいの? 6

  7. こたえ • 目的によってケースバイケースなので 答え(ライブラリー)はちがいます。 7

  8. 目的が決まっているなら答えは簡単 8

  9. 回答例(目的がはっきりしている) • ゲームを作りたい • Pygames(https://www.pygame.org/news) • Pyxel (https://github.com/kitao/pyxel/blob/master/README.ja.m d) •

    CGソフト、3D系のゲームエンジンで使用したい場合 • Pyside2(Qt for Python)(https://wiki.qt.io/Qt_for_Python) 9
  10. 回答(とりあえずどんなものか試してみたい人) • 初心向けでよさそうなものなら以下の2つ • Eel •PySimpleGUI ※良さそう=汎用的に使用できそう 10

  11. 選んだ経緯(1/2) • 時代はWebアプリが全盛 • Pythonの国内の業務は、Web、データ解析、機械学習が大半 11

  12. 選んだ経緯(2/2) • Webの知識が身につくもの • インストールが簡単なもの • pipのインストールのみで済む • 依存関係のソフト/ドライバーのインストールが簡単なもの •

    つくりが簡単なもの 12
  13. Eelについて • Eelはウナギの事 • https://github.com/samuelhwilliams/Eel • 2017年末にできたライブラリー • 3,300Star •

    Windows,Mac,Linuxのクロスドメイン対応 13
  14. Demo • https://www.sakaki333.co m/blog/view/79 • Bootstrap と Vue.jsを組み 合わせている 14

  15. 構成 • ローカルで動くwebサーバと同じ Eelで作ってみる WHOISアプリと スライド JavaSript HTML GUIの部分 Python

    処理部分 WebSocetを使って やり取りする 15
  16. Eelの詳しい説明 Eelで作ってみる WHOISアプリと スライド Eelで作ってみる WHOISアプリと スライド @attakai(kAZUYA tAKEI) https://speakerdeck.com/attakei/eeldezuo-tutemiru-whoisapurito-suraido

    16
  17. 選んだ経緯 • Webの知識が身につくもの • html,CSS,JavaScriptの知識が身につく • テキストが豊富(webだから) • インストールが簡単なもの •

    Pip install eel と Googole Chromeのインストールでできる • しくみが簡単 • PythonとJavaScriptの連携で可能 17
  18. Eelが向いていない人 • Webの勉強は別にしたくない • Javascript,cssは奥が深い • PythonだけでGUIを書きたい 18

  19. PySimpleGUIの紹介 • https://pysimplegui.readthedocs.io/en/latest/ • 2018年にできたライブラリー • TkinterのラッパーでPythonライクに書けるのが特徴 • 派生でwxPython、PyQtのラッパーライブラリーも存在 •

    公式では元のライブラリで書くのに比べてコード量が1/2~1/10になると説明 • Githubでは3,000スター • ライセンスはLGPL-3.0 • Windows,Mac,Linuxのクロスドメイン対応 19
  20. デモの(画像処理の入力、確認) • 「アスキーアートを自動生成する - Pythonでいろいろやってみる」https://tat- pytone.hatenablog.com/entry/2020/02/26/202205 のコードをお借りしてUIをつけてみまし た。 • 画像ファイルを選択して、スライダー部分で文字の大きさを変更する。

    • GUIのコード部分は80行程度 • コード: https://github.com/okajun35/for_pycon_shizu/tree/master/example/08_asci_art 20
  21. PySimpleGUIの詳しい説明 ⚫Tkinterを使うのであればPySimpleGUIを使ってみたらという話 (https://qiita.com/dario_okazaki/items/656de21cab5c81cabe59) ⚫Pythonでデスクトップアプリを簡単に作る方法 (https://speakerdeck.com/okajun35/pythondedesukutotupuapuriwojia n-dan-nizuo-rufang-fa) で作ってみる WHOISアプリと スライド 21

  22. 選んだ経緯 • Pythonのみでかける • インストールが簡単なもの • pip install pysimpleguiのみ •

    tkinterはPythonのインストール時に標準で入ってくる • 仕組みが簡単 • レイアウトの細かいことはPySimpleGUI内で自動でしてくれる 22
  23. PySimpleGUIが向いていない人 • レイアウトに凝りたい人 • Macユーザ • Macだとtkinterを使用するうえで不具合がある • IME(変換中の日本語入力)が表示されないなど •

    PySimpleGUIWX(wxPythonのラッパー)ならMacでも正しく動作するが wxPythonのインストールが必要 23
  24. Pyinstaller • 配布用にexe,appにパッケージ化するライブラリ • https://www.pyinstaller.org/ • 配布用に使用する • 設定が難しい場合がある •

    実行動作が遅くなる • 初心者は使用しない方がよい • 配布するなら、pip freezeしたものをrequirements.txtで配布したほ うがよい ※ユーザーはPythonのインストール+ライブラリーのインストールで使用してもらう 24
  25. よく見る質問2 • デスクトップアプリで作った方がいいアプリは なに? 25

  26. デスクトップアプリを作るのに向いてい るもの • 不特定多数の人に配布しないアプリ • 個人で作ったちょっとしたツール • 社内ツール • webアプリにする前にアルゴリズムの効果を検討したいもの

    26
  27. まとめ • デスクトップアプリはPythonではメジャーではない • 使用用途によっては簡単にUIが作れる • 汎用的なライブラリなら以下の2つを使って作る • Eel •

    PySimpleGUI • バイナリ化はPyInstallerを使って作れるが初心者は使わない方 がよい 27
  28. おまけ:スマホアプリを作るなら • 個人でのみ使いたい場合 • Andoriod ・・・PyDroid3 • iOS ・・・Pythonista3 •

    Google PlayやApp Storeに配布したい場合 • UIは、Java,Kotlin,Swift,ReactNativeなどを使用する • Pythonを使用する場合はAPIサーバを立ててリクエストで入出力する • Kivy,PyBeeなどのPythonライブラリは初心者は使用しない方が無難 28