SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【Python】PythonでGUI(デスクトップ)アプリを作ってみる@Windows

お手軽アプリ作成。

Pythonを使用してなにかアプリを作ってみようと思うならGUIアプリはよさそうです。
webアプリと比較して実行環境を特別必要としないし、初心者が個人で作成する場合でも実用的なものがつくりやすそうと感じました。
ニッチなものであれば一般に公開されているアプリよりも便利なものも作れるかもしれません。

環境

Windows10マシン上でPythonのGUI(デスクトップ)アプリを作成します。
気まぐれでやってみただけなので、必要な要素を列挙しているだけに近いので別途ぐぐり推奨。

ホストマシン:Windows10
conda version : 4.8.2
python version : 3.7.6

ホストマシンにAnacondaがインストールされていることを前提としています。

www.wantanblog.com

テキストエディタ(IDE)

簡単なアプリならメモ帳でも十分。
ただ動作確認のためにいちいちアプリを実行する必要があるので、即時で実行できる何かはいれておいた方がやりやすくはあります。
私が今回使用したものを紹介はしますが、他のものでも全然OK。

Spyder

今回はAnacondaに標準で入っているSpyderを使用してプログラムを記述しました。

f:id:wantanBlog:20200711024542p:plain

画面はこんな感じ。
すぐに実行、デバックもできますしお試しに使うには十分に高機能です。

f:id:wantanBlog:20200711024756p:plain

GUIライブラリ

軽く調べてみた感じだと以下のもの以外にも選択肢はあるみたいです。

tkinter

GUIの表示を自分でゼロから作るには相当な苦労が伴います。
(というか個人で現実的にできるのか??)

なので今回はGUI部分はPythonに標準で搭載されているtkinterというライブラリを使用しました。
最近のPythonがインストールされている環境であれば最初からインストールされているっぽいです。

・記述例(抜粋)

# Tkinterライブラリのインポート
import tkinter as tk

root = tk.Tk()
# 常に最前表示
root.attributes("-topmost", True)
root.title("すぐぐる")
root.geometry("420x40")
label = tk.Label(root, text="")
label.pack()
# テキストボックス
txt = tk.Entry(width=65)
txt.place(x=10, y=10)
# エンターで検索処理
root.bind('<Return>', app.callback)
root.mainloop()

上記のようなコードを記述して Spyderで実行するとデスクトップ上に以下のようなものが表示されます。

f:id:wantanBlog:20200711030250p:plain

必要な部分だけ調べたので私は基本的なところもわかっていません。
作りたいものに応じていろいろと試してみましょう。

アプリケーションの実行ファイル化(.exe)

普通にPythonコードを記述しているとファイルはpyファイルとして保存されていると思います。
自分用のアプリにしても誰かに配布したいにしても、わざわざIDEで実行したりプロンプトから実行するのはめんどうであり実践的に使わなくなってきてしまうことが容易に想像できます。
また、配布を考える場合は特にpythonが入っていないと、Anacondaが入っていないと。
となるとそもそも環境によって使えない場合もでてきてしまいます。

なので作成したアプリをファイル一つで実行できるように実行ファイル化します。

pyinstaller

こちらもいくつか選択肢があると思いますが、私はpyinstallerを使用しました。

こちらは明示的にインストールしないと入っていないのでまずはインストールから実行します。
Anaconda Prompt(またはそれに準ずるもの)からインストールを実行します。

pip install pyinstaller

インストールが完了したらプロンプト上で、対象のアプリ(.pyファイル)がある場所に移動します。
対象のアプリに対して以下のコマンドを実行します。

pyinstaller sggr_ap.py --onefile --noconsole

エラーなどがなければ以下のような構成でファイルとフォルダが生成されると思います。

f:id:wantanBlog:20200711032556p:plain

お目当ての実行ファイルはdistフォルダに生成されているはずです。

f:id:wantanBlog:20200711032734p:plain

これで一般的なアプリケーションと同じように単体ファイルで実行できるようになりました。

サンプルアプリケーション(すぐぐる)

すぐぐぐるやつです。
デスクトップ上のテキストボックスへ入力を行ってブラウザ上で検索を行います。

しかし、つくりは粗い。。

使い方

デスクトップ上にアプリのショートカットを作成して実行(ダブルクリック)する。
この辺は一般的なアプリと一緒ですね。

f:id:wantanBlog:20200711224843p:plain

デスクトップ上にテキストボックスが現れるので他の操作の邪魔にならない任意の場所に配置しておく。

f:id:wantanBlog:20200711225005p:plain

ぐぐりたいワードを入力してエンター。

f:id:wantanBlog:20200711225238p:plain

ブラウザに検索結果が表示される。

f:id:wantanBlog:20200711225549p:plain

それだけ!!

仕様とか


・テキストボックスは常に前面に表示される。
・そのマシンの標準ブラウザにてグーグル検索が行われる。
ブラウザが開かれていない場合には新しいウィンドウを開く。
すでに開かれている場合は一番最近に使用したウィンドウに対して新しいタブを開く。
・検索ワードは一度検索したらテキストボックスから削除される。

ブラウザが選択できたり直感的に拡張検索が使えたりした方がそれっぽいけどまぁすぐできる範囲で。


何か思いついたらちゃんと作ってみたいものです。


・サンプルソースなど

GitHub - wantanblog/sggr_ap

・アプリ本体

sggr_ap/sggr_ap.exe at master · wantanblog/sggr_ap · GitHub