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
420
0
Share
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
790
Kosen_LT_ONLINEのおしらせ
strvworks
0
100
Minecraft概論
strvworks
0
400
日本列島の移動速度に関する考察
strvworks
1
160
快適な読書環境のご提案
strvworks
0
140
テクノ手芸
strvworks
0
93
Other Decks in Programming
See All in Programming
おれのAgentic Coding 2026/03
tsukasagr
1
120
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
280
The free-lunch guide to idea circularity
hollycummins
0
400
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
460
OTP を自動で入力する裏技
megabitsenmzq
0
130
事業会社でのセキュリティ長期インターンについて
masachikaura
0
210
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
220
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.2k
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
180
Tamach-sre-3_ANDPAD-shimaison93
mane12yurks38
0
240
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
130
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
3
2.7k
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
2.9M
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Building an army of robots
kneath
306
46k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
99
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
160
A designer walks into a library…
pauljervisheath
211
24k
The SEO Collaboration Effect
kristinabergwall1
0
410
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
170
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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で ゆるして