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
410
日本列島の移動速度に関する考察
strvworks
1
170
快適な読書環境のご提案
strvworks
0
140
テクノ手芸
strvworks
0
95
Other Decks in Programming
See All in Programming
How We Benchmarked Quarkus: Patterns and anti-patterns
hollycummins
1
180
PHPでローカル環境用のSSL/TLS証明書を発行することはできるのか? #phpconkagawa
akase244
0
350
The Less-Told Story of Socket Timeouts
coe401_
3
1k
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
170
[RubyKaigi 2026] Require Hooks
palkan
1
300
AIを導入する前にやるべきこと
negima
2
340
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
2.9k
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.8k
属人化しないコード品質の作り方_2026.04.07.pdf
muraaano
0
320
GitHubCopilotCLIをはじめよう.pdf
htkym
0
330
Kubernetesを使わない環境にもCloud Nativeなデプロイを実現する / Enabling Cloud Native deployments without the complexity of Kubernetes
linyows
3
330
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
4
450
Featured
See All Featured
Designing for Performance
lara
611
70k
Documentation Writing (for coders)
carmenintech
77
5.3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1k
Technical Leadership for Architectural Decision Making
baasie
3
360
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
33
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.4k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Six Lessons from altMBA
skipperchong
29
4.2k
Exploring anti-patterns in Rails
aemeredith
3
350
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
180
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で ゆるして