Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PythonにおけるGUIフレームワークのはなし
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
stonriver
June 18, 2018
Programming
430
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PythonにおけるGUIフレームワークのはなし
stonriver
June 18, 2018
More Decks by stonriver
See All by stonriver
中規模イベントに急造で変なネットワークを構築する
strvworks
1
790
並行処理入門 -Goで遊ぶ-
strvworks
0
270
ターミナル雑記
strvworks
2
1.4k
お手軽金盾体験
strvworks
1
800
Kosen_LT_ONLINEのおしらせ
strvworks
0
110
Minecraft概論
strvworks
0
410
日本列島の移動速度に関する考察
strvworks
1
170
快適な読書環境のご提案
strvworks
0
150
テクノ手芸
strvworks
0
99
Other Decks in Programming
See All in Programming
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.3k
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
11
5.9k
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
110
ふつうのFeature Flag実践入門
irof
8
4.1k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
410
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
270
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.8k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
710
Oxcを導入して開発体験が向上した話
yug1224
4
320
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
590
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
Documentation Writing (for coders)
carmenintech
77
5.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Scaling GitHub
holman
464
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
Prompt Engineering for Job Search
mfonobong
0
350
Transcript
Pythonにおける GUIフレームワークのはなし
0 はじめに
はじめに 私は最近、Pythonを用いてとあるデスクトッ プアプリケーションの作成をしています。 そもそもPythonはあまりデスクトップアプリ ケーションを開発するのに向いないと思うので すが(特にインターフェイスでは)、作らなけれ ばならないので作らなければならないのです。 しかも、その成果ソフトウェアは.exe形式に してPythonの入っていない他のPCでも動作す るようにしなければなりません。
その過程での諸々を紹介したいと思います。
1 CUIとGUIとは?(前提) Let’s start with the first set of slides
CUIとGUIとは? 普段私達が使っているアプリ ケーションのユーザーインター フェースには、大きく分けて二 種類が存在します。それが、 ・CUI(キャラクタユーザーインターフェース ) ・GUI(グラフィカルユーザーインターフェース ) です。
GUIアプリケーション CUIアプリケーション
CUI 慣れると使いやすいしとても早い。 コマンドを叩いての動作が一般的な ので、他のソフトに組み込みやす い。 グラフィカルなUIを描画するための 負担をPCに書けないため、同機能の GUIソフトウェアに比べて軽量であ る事が多い。 シンプルで良い。
CUIとGUIとは? GUI 直感的な操作ができるため、一般向 けに最適。 GUIでなければ成立しないソフト ウェアも多い。 工夫すれば様々な見た目を作り出せ るので、ソフトウェアの雰囲気を演 出しやすい。 CUIとGUI,それぞれ利点と欠点があります。
CUIとGUIとは? CUIアプリケーションは、その種類にもよりま すが、基本的に標準入出力だけで簡易的にツー ルを作成することができるため、文字の表示や 入力そのものにそこまで苦労しません。 しかし、GUIアプリケーションとなると見た目 を細かく設計しなければならないため、全て自 力で核となるとかなり面倒なことになります。 そんなときに役立つのがGUIライブラリです。 ※やばいCUIアプリケーションもある
GUIライブラリとは GUIライブラリとは、GUIアプリケーションを作成するにあたっ て必要となるパーツの実装(クラスやライブラリ)をまとめたも のです。 簡単に言うと、よく使われるwidgetのテンプレートを提供した り、GUIデザインがしやすいような下地を提供してくれたりする ものです。 これによりプログラマはいちいちボタンの機能を実装したりせず とも、ボタンを配置するというコードを与えるだけでボタンを配 置できたりします。
GUIライブラリ(フレームワーク)とは デザイナーと呼ばれるツールがフレームワークに用意されてい ることもあります。これはVisualStudioに組み込まれてい る.Net向けのGUIデザイナー
2 Pythonで使えそうだった GUIライブラリ GUI Framework
Pythonで使える(?)GUIライブラリ ・wxPython ▪ wxWidgetsというGUIツー ルキットのPythonバイン ディングライブラリ。 ▪ 商用利用が可能。 ▪ wxGladeというデザイナー
が利用可能。 ▪ 今はバージョンPhoenixと 改名して更新中。
Pythonで使える(?)GUIライブラリ ・Tkinter ▪ Tcl/TkのTkのGUIツール キットのPythonバインディ ングライブラリ。 ▪ 追加インストール無しで Pythonに標準で含まれてい る。機能性は微妙。
▪ TK GUI Builderというデ ザイナーが存在するようだ が、最終更新が2006年?? ▪ 商用利用可能。 特にロゴはない模様。
Pythonで使える(?)GUIライブラリ ・PyQt5 (4も現役) ▪ QtというGUIツールキット のPythonバインディングフ レームワーク。かなり高機 能で更新も続いている。 ▪ Qt Designerというデザイ
ナーソフトが存在する。無 償版と有償版がある。無償 版はライセンスがGPLなの で、商用利用は微妙。 ▪ PyQt5自体もGPLライセンス もしくは商用ライセンスな ので、無償での商用利用は 微妙。
Pythonで使える(?)GUIライブラリ ・Kivy ▪ ちょっと新しいライブラ リ。Pygameの描画を利用し たライブラリ。現在も非常 に活発な開発が続いてい る。ただし若干不安定。 ▪ Kivy
Designerというデザ イナーソフトが存在するが 不安定。 ▪ Kv langというCSSのよう な?独自言語でGUIを記述で きる。わかりやすい。 ▪ windowsから macOS,Androidやiosのア プリまでPythonで作れるよ うになるすごいやつ。
Pythonで使える(?)GUIフレームワーク などなど、数だけ上げれば沢山のGUIフレームワークがあ るのですが、Pythonで使えるGUIフレームワークは現状 ではどれも一長一短といった感じが強いです。 ものによってはテンプレート的には作れるけれど見た目を カスタマイズするのが難しく、見た目が重視される場では 使いにくいものも多いです。 そこで…?
3 Web技術との連携 EEL
Web技術との連携 見た目をカスタマイズして、様々な演出をする ことに特化しているWeb技術をPythonでも利 用したい!という結論に至りました。 でも勿論僕はJS周辺の言語を触りたいわけで はないので、メインとなる裏はPythonで記述 し、見た目(インターフェイス)部分だけWeb技 術で作りたいです。 そんなことを思って探してみたら……
Web技術との連携 ありました
Web技術との連携 こちら、今年の1月に最初のコミットあっ た”EEL”という非常に新しいライブラリです。 フロントエンドを記述する各種Web技術と Pyhonを簡単につなぐことができます。 Pipに登録されているので、 $ pip install eel
だけでインストールできます。
Web技術との連携 たとえばどんなふうに使うのかというと、 import eel eel.init("web") eel.start("main.html") <html> <head> <meta charset="UTF-8">
<title>Eel</title> </head> <body> Hello World!! </body> </html> Main.html eel_gui.py みたいに書いてeel_gui.pyを実行すると
Web技術との連携 こうなります
Web技術との連携 勿論HTMLを表示できるだけでなく こんなふうに書くと、Pythonの関数をJsから 呼べたり、 console.log('Calling Python...'); eel.my_python_function(1, 2); @eel.expose def
my_python_function(a, b): print(a, b, a + b) Python JavaScript
Web技術との連携 逆に JavaScriptの関数をPythonから呼ぶこともできます。 print('Calling Javascript...') eel.my_javascript_function(1, 2, 3, 4) eel.expose(my_javascript_function);
function my_javascript_function(a, b, c, d) { if(a < b){ console.log(c * d); } } JavaScript Python
しかも
Web技術との連携 こんなコマンドを作業しているディレクトリで 実行するだけで、PythonをGUI込みのexe形 式の実行ファイルに変換できます!! $ python -m eel [main_script] [web_folder]
おわり
つづきはWEBで ゆるして