PythonでGUIアプリをつくる!おすすめのライブラリとは
Pythonといえば、機械学習。そんな風に考えていらっしゃる方も多いのではないでしょうか。
しかし、Pythonにはさまざまなライブラリが存在しているので、実は機械学習やディープラーニングといった分野だけでなくWebアプリなども作成することが可能です。
FacebookやDrop box、Instagramといった、大規模なウェブサービスもPythonで開発されていると聞けば納得でしょう。
しかもPythonを使えば、なんとデスクトップ上で動くGUIアプリケーションですら開発することも可能なのです。
今回は、PythonでGUIアプリを作るためのおすすめのライブラリの紹介と、実際にアプリを作る際のポイントをご紹介します。
▽関連記事はこちら
GUIアプリとは?
「GUI」とはGraphical User Interfaceの略で、ユーザーが見やすいよう、ウィンドウ上で絵やボタンなどを表示して選択や操作ができるインタフェースのことです。GUIアプリとはそのままGUIを使ってユーザーが操作できるアプリで、一般ユーザー向けのアプリはほぼ全てがGUIアプリです。
OSのデスクトップ上で動くGUIアプリを作成するには、コンパイラ型言語が必用と思われがちですが、スクリプト言語のPythonでも、ライブラリを使えば、簡単なユーティリティアプリぐらいは簡単に作成することが可能です。
GUIアプリ作成といえば、有名どころではJavaScriptで使用できるHTA、Excelで使用できるVBA、サーバーサイドJavaScriptのNode.jsではNW.jsなどを使ってGUIアプリを作成することができます。このようにPythonでもGUIアプリを作るために便利なライブラリが用意されています。
どんなライブラリがあるかを以下で紹介します。
tkInter
tkInterはPythonの標準ライブラリに採用されているGUIライブラリで、Tcl/Tk(ティクル・ティーケー)のGUIライブラリのTkをPythonで利用できるようにした物です。クロスプラットフォームでGUIアプリを作成できる点は他のライブラリと同様です。
tkInterは、Pythonの標準ライブラリという強みもあるものの、tkInterで作ったGUIアプリの作者が少ないことがデメリットです。
▽もっと「Tkinter」について知る
PyQt
PyQtはRiverbank Computing社によって開発されており、GPLライセンスと商用ライセンスで提供されています。商用のプログラムを作らない限りは、フリーライセンスで利用可能です。
商用ソフトでQtを利用するには、Nokiaが公開しているPySideがLPGLライセンスで提供されているのでフリーで利用することが可能ですが、PyQtと比べると利用者は少ないようです。
PyQtもクロスプラットフォーム対応で、440のクラスと6000以上の関数とメソッドを持っているのが特徴です。GUIのパーツの表示をQt側で受け持つことによってネイティブアプリケーションに似たUIを構築できる点が支持されていて、実際PyQtを使ったGUIアプリは数多く存在します。
wxPython
wxPythonは一番メジャーと言っても良いクロスプラットフォームのGUIライブラリです。
UI表示にはOSのAPIを使用しているため、見た目もネイティブアプリケーションの様に作ることが可能です。
現在、Python標準ライブラリとしてTkInterが採用されていますが、それはTkInterが先に開発されたからで、本当に汎用的に利用できるGUIライブラリはwxPythonであるとPythonの生みの親もコメントしているほどです。
Pythonで作られていることで有名なDropboxですが、GUIライブラリにはwxPythonが使われているそうです。
▽もっと「wxPython」について知る
実際に使ってみよう
このようにGUIライブラリを利用すればスクリプト言語でもわりと簡単にデスクトップ上で動くアプリを作成することが可能なのです。
そこで、tkInterを使って実際にGUIアプリを作る例を見てみましょう。このソースコードは、tkInterの公式ぺージで公開されているコードに解説を付け足したものです。
▽tkinter — Tcl/Tk の Python インタフェース
https://docs.python.org/ja/3/library/tkinter.html
# Tkinterのライブラリを取り込む
import tkinter as tk
# アプリの初期設定 class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets()
# tk. Buttonでボタン作成 def create_widgets(self): self.hi_there = tk.Button(self) # ボタンの表示テキスト作成 self.hi_there[“text”] = “Hello World\n(click me)” # ボタン押下時のコマンド設定 self.hi_there[“command”] = self.say_hi # ボタンの配置指定 self.hi_there.pack(side=”top”)
# 閉じるQUITボタン作成 self.quit = tk.Button(self, text=”QUIT”, fg=”red”, command=self.master.destroy) self.quit.pack(side=”bottom”)
def say_hi(self): print(“hi there, everyone!”)
# tk.Tkでウィンドウ作成 root = tk.Tk() app = Application(master=root) # アプリのウィンドウを実行して表示 app.mainloop() |
このように、tkInterを使うと、tk.Buttonなどの簡単な指定によってボタンを作ることができます。このソースコードを例えば「test_tk.py」というファイル名で保存し、プログラムを実行すると、以下のようなウィンドウが出てきます。(見やすく拡大しています。)
そして「Hello World(click me)」をクリックすると、実行したプロンプト上に「hi there, everyone!」というメッセージが表示されます。
これは簡単なボタン二つのプログラムですが、この他にもtk.Labelのコマンドではラベル、tk.Entryではテキストボックスが作れ、それぞれの表示名や動作を引数で与えることができるなどGUIの部品に関する操作がやりやすくなっています。
GUIアプリをネイティブアプリとして使うには
さてこのようにPythonでGUIアプリを作成しても、使う際には少し面倒なことがあります。Pythonのプログラムは「.py」の拡張子のファイルであり、そのまま単体では実行ができません。
Pythonはスクリプト型言語のためコンパイルなどの処理がありません。Pythonプログラムを実行するためには、その実行したい環境の上にPythonをインストールしてコマンドプロンプト上からPythonのコマンドを入力しなければならないのです。
こうしたPythonのアプリに対し、普段パソコン上で使っているようなデスクトップアプリはネイティブアプリと呼ばれます。ネイティブアプリとは、アプリを実行する際にPythonなどの他プログラム上で実行されるのではなく、そのアプリ自体があれば、ダブルクリックするなどの操作で実行できる形式のアプリのことです。主にWindowsでは「.exe」の拡張子を持つファイルとなります。
Pythonで作成したアプリをネイティブアプリのように実行ファイル形式にするためには一手間かける必要があります。
Pythonで組んだアプリを.exeファイルに変換したい場合、実行ファイル形式のパッケージを作る専用のツールがあります。実行ファイル形式にすればPythonがインストールされていない環境でもそのアプリだけで実行出来るようになります。
ではそのツールとはどんなものか、見ていきましょう。
Pyinstaller
Python専用のexeファイルを作れるツールです。インストールは公式サイトまたはPython公式パッケージツールのpipからも行えます。
Pyinstallerのコマンドを1行実行するだけで簡単に実行ファイルが作れます。2019年7月現在、最新バージョンであるPython3.7まで対応しています。
実行ファイルも作ってみよう
上の章で保存したtest_tk.pyを実行ファイルに変換する例を見てみましょう。
ここではpipを使ってインストールを行います。Pyinstallerは、通常Pythonをインストールすれば特別にファイルをダウンロードしたりしなくてもpipを使用してすぐにインストールできます。Pythonがインストールされている環境上で、コマンドプロンプトで以下のコマンドを実行します。
> pip install pyinstaller |
これでPyinstallerがインストールされ、使えるようになります。
その後、pyinstallerコマンドで実行ファイルに変換したい元のファイルを指定し、exeファイルを作ります。
> pyinstaller test_tk.py |
このコマンドを実行すると、元ファイルと同じ場所にdistフォルダやbuildフォルダなどいくつかのファイル・フォルダが作られます。そしてdistフォルダ内のtest_tkフォルダ内に実行ファイルが作られます。
このように、ファイルの種類が「アプリケーション」となっています。
ここまでくれば完成で、このアプリケーションファイルは単体で実行できます。
このアプリケーションファイルをダブルクリックすれば、Pythonを起動してtest_tk.pyを実行したときと同じようにGUIのウィンドウが現れます。
同時にプロンプト画面も出現し、ボタンを押した際には「hi there, everyone!」メッセージが表示されます。プロンプトはQUITボタンを押せば一緒に閉じます。
まとめ
PythonでGUIアプリを作るのに便利なライブラリやツールをご紹介しましたが、Pythonは世界中で多く使われている言語であるため他にもさまざまなツールがたくさんあります。チュートリアルのページも多く存在するので、GUIアプリを作る際はぜひ利用してみましょう。
▽まだまだある!Python GUIライブラリ人気記事
追記:2019/7/12アップデート
▼キャパの公式Twitter・FacebookではITに関する情報を随時更新しています!
建設・土木業界向け 5分でわかるCAD・BIM・CIMの ホワイトペーパー配布中!
CAD・BIM・CIMの
❶データ活用方法
❷主要ソフトウェア
❸カスタマイズ
❹プログラミング
についてまとめたホワイトペーパーを配布中
デジタルツインと i-Constructionについての ホワイトペーパー配布中!
❶デジタルツインの定義
❷デジタルツインが建設業界にもたらすもの
❸i-Constructionの概要
❹i-Constructionのトップランナー施策