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
stonriver
June 18, 2018
Programming
0
410
PythonにおけるGUIフレームワークのはなし
stonriver
June 18, 2018
Tweet
Share
More Decks by stonriver
See All by stonriver
中規模イベントに急造で変なネットワークを構築する
strvworks
1
790
並行処理入門 -Goで遊ぶ-
strvworks
0
260
ターミナル雑記
strvworks
2
1.4k
お手軽金盾体験
strvworks
1
780
Kosen_LT_ONLINEのおしらせ
strvworks
0
98
Minecraft概論
strvworks
0
400
日本列島の移動速度に関する考察
strvworks
1
160
快適な読書環境のご提案
strvworks
0
140
テクノ手芸
strvworks
0
89
Other Decks in Programming
See All in Programming
AIプロダクト時代のQAエンジニアに求められること
imtnd
2
670
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
160
AHC061解説
shun_pi
0
320
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
440
Unity6.3 AudioUpdate
cova8bitdots
0
110
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
160
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
350
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
170
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
160
Event Storming
hschwentner
3
1.3k
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
120
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
640
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
140
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
63
53k
Why Our Code Smells
bkeepers
PRO
340
58k
エンジニアに許された特別な時間の終わり
watany
106
240k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
110
Optimising Largest Contentful Paint
csswizardry
37
3.6k
The Language of Interfaces
destraynor
162
26k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
A Soul's Torment
seathinner
5
2.4k
Being A Developer After 40
akosma
91
590k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
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で ゆるして