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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
780
並行処理入門 -Goで遊ぶ-
strvworks
0
260
ターミナル雑記
strvworks
2
1.4k
お手軽金盾体験
strvworks
1
780
Kosen_LT_ONLINEのおしらせ
strvworks
0
96
Minecraft概論
strvworks
0
390
日本列島の移動速度に関する考察
strvworks
1
150
快適な読書環境のご提案
strvworks
0
140
テクノ手芸
strvworks
0
88
Other Decks in Programming
See All in Programming
dchart: charts from deck markup
ajstarks
3
990
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Patterns of Patterns
denyspoltorak
0
1.4k
Architectural Extensions
denyspoltorak
0
270
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
240
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
140
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
170
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.4k
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
440
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
12
6.4k
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Documentation Writing (for coders)
carmenintech
77
5.2k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Facilitating Awesome Meetings
lara
57
6.7k
Believing is Seeing
oripsolob
1
53
How STYLIGHT went responsive
nonsquared
100
6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Utilizing Notion as your number one productivity tool
mfonobong
2
210
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
110
HDC tutorial
michielstock
1
350
Designing for humans not robots
tammielis
254
26k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
48
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で ゆるして