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

PythonのGUI@2018

 PythonのGUI@2018

2018年7月28日開催の「長野Python会 with NSEG」の資料です。

Jun okazaki

July 27, 2018
Tweet

More Decks by Jun okazaki

Other Decks in Programming

Transcript

  1. 今日のアジェンダ • なぜGUIは初心向けでないといわれるか? • 個人的に今後PythonのGUIで注目しているもの • 実演 • tkinter •

    wxPython • Eel • Kivy • Pythonが使えるゲームエンジンについて • exe化について • まとめ
  2. PythonのGUIのシェアについて • https://www.jetbrains.com/research/devecosystem- 2018/python/ • JetBrainsの2018の資料 • Pythonで何のフレームワークを使用していますかの質 問の答え •

    GUIは以下 • PyQT/PyGTK/wxPython:11% • TkInter : 7% • Kivy :2% • 参考:NumPy / matplotlib / SciPy / Pandas and similar : 47% Django:39%、Flask:39%
  3. Pythonの主要なGUI • tkiner • wxPython • pySide2 • Kivy •

    flexx • cefpython • Eel • Toga • FLTK • PyGObject • pyQt • Pyglet • PyGUi • libavg • Pyforms etc・・・
  4. 個人的にPythonのGUIで注目しているもの • tkinter • wxPython • Eel • Kivy •

    PySide2 • UnrealEngine(ゲームエンジン) • godot engine(ゲームエンジン)
  5. 説明するコードについて • 定期的にセンサーから取得した値をラベルで表示する • USBで始めるハードウェアモジュール • 温度/湿度/気圧を計測する 室内環境計測モジュール • @nonNoise

    さんが作ったキット、Pythonでセンサーからの値を取得できる • 技術書典4で購入 • PCにUSBで接続すると使用可能(ドライバーの手動インストール不要!)
  6. tkinter • 読み方:ティーキンター, ティーケーインター • Pythonに標準で付属している • インストールが簡単 • 配布も簡単

    • 見た目がいまいち • Python3.4以降から改善 • 機能面がいまいち • キャンバスの使い方などで学習コストが意外に高い
  7. wxPython • wxWidgets のPythonバインディング • 元はC++ • 公式サイト: https://www.wxpython.org/ •

    Phoenixバージョンという3系対応のプロジェクトあり • 3系対応時に仕様の変更が結構あったらしい • PyPlに対応したのでpipでインストールできるようになった • 使用実績は一時期多かった • Dropbox、Google Drive、BitTorrent など • wxGlade/ WxFormBuilderという、GUIツールキットがある • WindowsOSだと見た目が・・
  8. Eel • https://github.com/ChrisKnott/Eel/tree/mast er • Eelはナマズの意味 • 2017年11月ごろにGitHubに登録 • Starの数は2106

    • Electron をシンプルにしたもの。 • 一時期はやった、Python(flask) + Electronより も簡単
  9. Eel(メリット) • UI をhtml Javascript で作れる • Javascript系の豊富なライブラリが使用できる • グラフなどが簡単に作れる

    • 業務でWeb系の仕事を作る人なら開発のハードルが低い • JSは自分で書く必要がある • 余談 JSを書きたくない人のためのライブラリ (Pythonからjsに変換する) • flexx (GUI) • Brython • pyinstller でexe化が可能
  10. Kivy(学習の参考になるもの) • 日本語の本は3冊出版されている • 最近出た本 Kivyプログラミング ―Pythonで作る マルチタッチアプリ― (実践Pythonライブラリー •

    https://www.amazon.co.jp/dp/4254128967/ • 国内で出たKivy関係の本では最もよい • 公式ドキュメントの翻訳(https://github.com/pyKy/kivy- doc-ja) • 最新に追従していないので参考にする際は英語の公式ドキュ メントと読み比べてください • Python Kivyの使い方① ~Kv Languageの基本~ (https://qiita.com/dario_okazaki/items/7892b24fcfa787faface)
  11. Kivy(実績) • 仕事で使っている案件が数例あり • キュウリの仕分け3号機 • TensorFlowでキュウリの仕分けを自動化する • 学習の際のUIにKivyとRaspberryPyを使用 •

    https://news.mynavi.jp/article/20180606-642208/ • http://workpiles.com/2017/05/ccb9-proto3-introduction/ • https://www.youtube.com/watch?v=XOjwWlSpLME
  12. Kivy(日本語入力について) • 日本語表記についてはフォントの指定が必要 • IME(変換候補)は1.10.1からOSによっては出るようになった • Webや書籍に書いてある日本語が出ない不具合はある程度解消された • IMEの部分はSDLに依存しているので、OSによってでない状況は不明 OS

    IMEの対応状況 詳細 windows △ IMEは開く MacOS 〇 IMEは開く、変換候補も複数開く Linux × 他の人の情報だとUbunutuでは開かないそ うです Android 〇 Nexus5、複数の機種で試したところ日本語 入力は問題なくできます iOS × IMEは開かないそうです。
  13. Kivy(マルチプラットフォームについて) • iOSは開発に力が入っていないので最新の状況 にあまり追随できていないように感じる。 • まだ公式だと2系しかサポートしていない • AndoridはPython3系対応が不完全 • Kivy

    Lancher は3系対応中 (https://github.com/kivy/kivy-launcher) • apkを作成するのは環境設定などが大変 • Numpyなど3dライブラリを入れる場合はBootstrapという 手法があるが変換が大変
  14. PySide2 • Qt for Pythonともいう • ライセンスフリーなQT系のライブラリ • 開発は盛んにおこなわれている •

    https://wiki.qt.io/Qt_for_Python • http://blog.qt.io/blog/2018/05/04/hello-qt-for-python/ • https://www.qoosky.io/techs/3eccbf937d • https://dftalk.jp/?p=20768
  15. UnrealEngine4 • Epic Gamesより開発されたゲームエンジン • 「ドラゴンクエストXI 」(ゲーム)や「ローグ・ワン/スター・ ウォーズ・ストーリー」(映画)に使用 • ゲーム会社がPythonで動かせるものを開発

    • https://github.com/20tab/UnrealEnginePython • EuroPython 2017 でもトークがある • AAA Games with Unreal Engine 4 and Python (https://www.youtube.com/watch?v=_38csFR5Hrw) • 公式でもPythonで動かせるように開発が進んでいる Setting up Collisions with Static Meshes in Blueprints and Python
  16. pyinstller • https://github.com/pyinstaller/pyinstaller • 使い方の参考 • https://pythonhosted.org/PyInstaller/usage.html • https://www.pyinstaller.org/https://www.lisz •

    works.com/entry/pyinstall • オプション • --onefile :1ファイルにまとめる場合 • -noconsole :起動時にログ出力などのコンソール画面を出さないようする場合 • specファイル • ライブラリの依存関係などを記述してexeにする際に取り込む
  17. Nuitka • https://github.com/kayhayen/Nuitka • http://nuitka.net/ • 参考 • https://githubja.com/kayhayen/nuitka •

    https://qiita.com/junichi2/items/e7f2d899d1014167f8bc • Cコンパイラでバイナリ化しているらしい • 起動速度が早い • exe化した場合の容量が小さい • 情報がまだまだ少ない • ライブラリを多く含むもののexe化が難しい