Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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/

Jun okazaki

March 11, 2020
Tweet

More Decks by Jun okazaki

Other Decks in Technology

Transcript

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

    View Slide

  2. 自己紹介
    • オカザキ(@dario_okazaki)
    • 所属:(株)スカラコミュニケーション

    • 職業:サーバーサイドエンジニア
    • 趣味でPythonのGUIライブラリを調べてい
    ます
    2

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  10. 回答(とりあえずどんなものか試してみたい人)
    • 初心向けでよさそうなものなら以下の2つ
    • Eel
    •PySimpleGUI
    ※良さそう=汎用的に使用できそう
    10

    View Slide

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

    View Slide

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

    View Slide

  13. Eelについて
    • Eelはウナギの事
    • https://github.com/samuelhwilliams/Eel
    • 2017年末にできたライブラリー
    • 3,300Star
    • Windows,Mac,Linuxのクロスドメイン対応
    13

    View Slide

  14. Demo
    • https://www.sakaki333.co
    m/blog/view/79
    • Bootstrap と Vue.jsを組み
    合わせている
    14

    View Slide

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

    View Slide

  16. Eelの詳しい説明
    Eelで作ってみる WHOISアプリと スライド
    Eelで作ってみる WHOISアプリと スライド @attakai(kAZUYA tAKEI)
    https://speakerdeck.com/attakei/eeldezuo-tutemiru-whoisapurito-suraido
    16

    View Slide

  17. 選んだ経緯
    • Webの知識が身につくもの
    • html,CSS,JavaScriptの知識が身につく
    • テキストが豊富(webだから)
    • インストールが簡単なもの
    • Pip install eel と Googole Chromeのインストールでできる
    • しくみが簡単
    • PythonとJavaScriptの連携で可能
    17

    View Slide

  18. Eelが向いていない人
    • Webの勉強は別にしたくない
    • Javascript,cssは奥が深い
    • PythonだけでGUIを書きたい
    18

    View Slide

  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

    View Slide

  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

    View Slide

  21. PySimpleGUIの詳しい説明
    ⚫Tkinterを使うのであればPySimpleGUIを使ってみたらという話
    (https://qiita.com/dario_okazaki/items/656de21cab5c81cabe59)
    ⚫Pythonでデスクトップアプリを簡単に作る方法
    (https://speakerdeck.com/okajun35/pythondedesukutotupuapuriwojia
    n-dan-nizuo-rufang-fa)
    で作ってみる WHOISアプリと スライド
    21

    View Slide

  22. 選んだ経緯
    • Pythonのみでかける
    • インストールが簡単なもの
    • pip install pysimpleguiのみ
    • tkinterはPythonのインストール時に標準で入ってくる
    • 仕組みが簡単
    • レイアウトの細かいことはPySimpleGUI内で自動でしてくれる
    22

    View Slide

  23. PySimpleGUIが向いていない人
    • レイアウトに凝りたい人
    • Macユーザ
    • Macだとtkinterを使用するうえで不具合がある
    • IME(変換中の日本語入力)が表示されないなど
    • PySimpleGUIWX(wxPythonのラッパー)ならMacでも正しく動作するが
    wxPythonのインストールが必要
    23

    View Slide

  24. Pyinstaller
    • 配布用にexe,appにパッケージ化するライブラリ
    • https://www.pyinstaller.org/
    • 配布用に使用する
    • 設定が難しい場合がある
    • 実行動作が遅くなる
    • 初心者は使用しない方がよい
    • 配布するなら、pip freezeしたものをrequirements.txtで配布したほ
    うがよい
    ※ユーザーはPythonのインストール+ライブラリーのインストールで使用してもらう
    24

    View Slide

  25. よく見る質問2
    • デスクトップアプリで作った方がいいアプリは
    なに?
    25

    View Slide

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

    View Slide

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

    View Slide

  28. おまけ:スマホアプリを作るなら
    • 個人でのみ使いたい場合
    • Andoriod ・・・PyDroid3
    • iOS ・・・Pythonista3
    • Google PlayやApp Storeに配布したい場合
    • UIは、Java,Kotlin,Swift,ReactNativeなどを使用する
    • Pythonを使用する場合はAPIサーバを立ててリクエストで入出力する
    • Kivy,PyBeeなどのPythonライブラリは初心者は使用しない方が無難
    28

    View Slide