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

PythonのGUI_2019.pdf

Jun okazaki
September 10, 2019

 PythonのGUI_2019.pdf

Jun okazaki

September 10, 2019
Tweet

More Decks by Jun okazaki

Other Decks in Technology

Transcript

  1. PythonのGUI@2019
    2019/09/10 オカザキ

    View Slide

  2. 自己紹介
    • オカザキ
    • 職業:プログラマー
    • http://twitter.com/dario_okazaki
    • PyconJP2017 トーク「Kivyによるアプリケーション開発のすす
    め」
    • 長野Python会 with NSEG(2018/7/28)「PythonのGUI@2018」

    View Slide

  3. 今日の内容のきっかけ
    PythonのGUIについて初心者向けのライブラリって
    どれがいいの?

    View Slide

  4. 個人的にお勧めのライブラリ
    • 「Eel」
    • https://github.com/ChrisKnott/Eel
    • 理由:簡単。Webの勉強にもなる
    • 「PySimpleGUI」
    • https://pysimplegui.readthedocs.io/en/latest/
    • 理由:そこそこ簡単。サンプルが多い

    View Slide

  5. PythoのGUIについて
    • 決定的なライブラリがない
    • 日本語の情報が少ない
    • ソフトウェア・ライセンス
    • バイナリ化(配布用)のライブラリでいいのがな

    View Slide

  6. ここ一年の出来事
    • GUIライブラリー
    • 「pySymplelGUI」が加わった
    • https://pysimplegui.readthedocs.io/en/latest/
    • パッケージライブラリー
    • 「PyOxidizer」が加わった
    • https://github.com/indygreg/PyOxidizer

    View Slide

  7. PythonのGUIライブラリ(1/2)
    • Tkinter
    • wxPython
    • PyQt5 ※QT
    • PySide2 ※QT
    • pySimplelGUI
    • PyGTK
    • PyFLTK
    • Kivy
    • Eel
    • flexx
    • REMI
    • Electron + Python※2
    • React Native +
    Transcrypt(altJS)※2
    • Pygame
    • Toga
    ※2はライブラリではなくて手法です

    View Slide

  8. PythonのGUIライブラリ(2/2)
    • cefpython
    • PyGObject
    • Pyglet
    • PyGUI
    • libavg
    • Pyforms
    etc・・・

    View Slide

  9. その他
    • その他(Android端末で動くもの)
    • QPython ※Andoridで動くIDE
    • Pydroid3 ※Andoridで動くIDE
    • LINE MessageAPI※Lineアプリ上で動くもの

    View Slide

  10. QT系
    • PythonのGUIでは一番メジャー
    • PyQT5
    • https://www.riverbankcomputing.com/software/py
    qt/intro
    • 商用ライセンス有
    • 開発元:Riverbank Computing社
    • PySide2
    • https://www.qt.io/jp/qt-for-python-2
    • 開発元:The Qt Company
    • 2つの違いはWebで検索してみてください

    View Slide

  11. Web系
    • Eel
    • flexx
    • REMI
    • Electron + Python
    • https://github.com/fyears/electron-python-
    example
    • React Native(AltJS) + Transcrypt
    • Node.js + vue or react+TypeScriptでよくない?

    View Slide

  12. Eel
    • Eel
    • https://github.com/ChrisKnott/Eel
    • PythonのElectronみたいなもの
    • Bottle+JavaScript+HTML+CSS
    • Chromeで動く
    • 詳しくはStapyの@attakeiが作成された資料を参考の事
    • https://speakerdeck.com/attakei/eeldezuo-tutemiru-
    whoisapurito-suraido

    View Slide

  13. PySympleGUI
    • PySympleGUI
    • https://pysimplegui.readthedocs.io/en/latest/
    • 2018年からプロジェクトが開始
    • https://www.reddit.com/r/Python/comments/d2ghve/a_case_for
    _a_pythonic_python_gui/
    • tkinter, Qt(一部), Remi, WxPythonのラッパー
    pip install pysimplegui
    or
    pip3 install pysimplegui

    View Slide

  14. 配布用(exe化)のライブラリ
    • Pyinstaller
    • 一番メジャー、ファイル容量と起動速度に難あり
    • Nuitka
    • Pythonnoのコンパイラ。ファイル容量が軽く、速度も早いが3rd
    ライブラリを入れたりするとうまく行かない場合あり
    • PyOxidizer
    • Py2exe
    • Windowsのみ
    • cx_Freeze
    • py2app ※MacOSのみ

    View Slide

  15. PyOxidizer
    • https://github.com/indygreg/PyOxidizer
    • 2019年から開始
    • Rustで作られている
    • Rustのインストールが必要
    • windowsの場合はVisualStudio Build Toolsのインストールが必

    • メモリからモジュールを直接ロードするのでPyInstallerより起動が
    速いらしい
    • https://pyoxidizer.readthedocs.io/en/latest/comparisons.html
    • ここに他のライブラリとの比較がある
    • できるバイナリは軽量で高速とあるが比較が難しい
    • 環境作成の手間を考えると今は様子みしたほうがいいかも

    View Slide

  16. その他:android/iOSアプリの開発について
    • Line Message API(bot)で開発がいいかも
    • 2019年4月にサービスが変わってフリープランで
    も月1000通まではPush通信ができるようになっ

    • 開発時にはngrok(https://ngrok.com/ )を使用すれ
    ばLocalhostの内容を一時的に外にできるように
    なる

    View Slide

  17. Kivy
    • https://github.com/kivy/kivy
    • Kevyはキウイを食べる鳥の事
    • Starの数は9811
    • 最新は1.11.1
    • Raspberry Pi ,android , iosを含めたクロスプ
    ラットフォームのPython製GUIライブラリ

    View Slide

  18. Kivy(Python3対応について)
    • 今年になってPython3に全て対応されました
    • Kivy
    • Python for android
    • Python2の実行サポートは終了
    • kivy-ios

    View Slide

  19. Kivy(日本語入力について)
    • IME(変換候補)は1.10.1からOSによっては出るようになった
    • Webや書籍に書いてある日本語が出ない不具合はある程度解消された
    • IMEの部分はSDLに依存しているので、OSによってでない状況は不明
    OS IMEの対応状況 詳細
    windows ○ パッチ当てる必要があったりするけどみんなの努力で変
    換候補まで出るようになった
    MacOS 〇 IMEは開く、変換候補も複数開く
    Linux △ 他の人の情報だとUbunutuでは開かないそうです。Ibus
    には対応しているとSDL2は言っている
    Android 〇 Nexus5、複数の機種で試したところ本語入力は問題なく
    できます※最新のSDL2だとバグっているかも
    iOS × IMEは開かないそうです。ただSDL2.0.9:のリリースノー
    ト見ると「iOS: Fixed Asian IME input」あるので、そのう
    ちできるようになる?

    View Slide

  20. Kivy(海外の話)
    • ここ1年ぐらいはKivyと機械学習を使ったものが多いみたい
    • 書籍
    • Building Android Apps in Python Using Kivy with
    Android Studio: With Pyjnius, Plyer, and
    Buildozer
    • Practical Computer Vision Applications Using
    Deep Learning with CNNs: With Detailed
    Examples in Python Using TensorFlow and Kivy
    • カンファレンス
    • Pycon APAC 2019 – Jairus Jimenez – Setting up
    Computer Vision with Kivy using Tensorfl

    View Slide