【簡単Python】デスクトップアプリのメニュー画面(GUI)を作成する簡単な方法|Tkinter
いつもありがとうございます。
「ノンプログラマー向けPython解説シリーズ」へようこそ。
本記事では、Pythonの標準ライブラリであり最も手軽な「tkinter」(ティー・ケー・インター)を使って、デスクトップアプリのメニュー画面(GUI: グラフィカル・ユーザー・インターフェース)を作成する方法を解説いたします。
なんと実質10行ほどの非常にシンプルな方法です。初心者でも簡単に作成することができます。
ことばの意味
- ライブラリ
特定の機能をもったコードの集合体です。ソフトウェア作成における部品のようなものです。新しいアプリケーションを作成する際、ライブラリを使用することで、プログラマーは複雑なコードを自分で書く必要がなくなります。 - デスクトップアプリ
パソコンで使うソフトウェアのことです。 - GUI(グラフィカルユーザーインターフェース)
ユーザーとコンピューターがコミュニケーションするための視覚的なインターフェースです。インターフェースとは接点のことです。ウィンドウ、ボタン等のグラフィカルな要素を使用してユーザーとコンピューターがコミュニケーションできるようにします。
デスクトップアプリのメニュー画面(GUI)を作成する簡単な方法
全体像
アプリの仕様
例として以下のメニュー画面を作成します。ウィンドウにボタンを1個配置したシンプルな例です。
コード
このメニュー画面を作成するには、以下のようにコードを記述します。
# Tkinterライブラリ(標準ライブラリ)のインポート
import tkinter
# 新しいウィンドウを作成
root = tkinter.Tk()
# ウィンドウのタイトルを設定
root.title('GUIサンプル')
# ウィンドウのサイズを設定
root.geometry('300x200')
# フレームを作成
frame = tkinter.Frame(root, borderwidth=2, relief='groove')
# フレームを配置
frame.pack(fill='both', expand=True, padx=5, pady=5)
# ボタンを作成
btn = tkinter.Button(frame, text='実行', width=10, height=2)
# ボタンを配置
btn.place(relx=0.5, rely=0.5, anchor='center')
# イベントループ開始(ユーザーからの入力を待つ状態)
root.mainloop()
解説していきます。
Tkinter をインポート
# Tkinterライブラリ(標準ライブラリ)のインポート
import tkinter
Tkinter をインポートします。Tkinter は Python に最初から付属している標準ライブラリであり、GUI(グラフィカルユーザーインターフェース)を作成するためのツールキットです。
ことばの意味
- 標準ライブラリ
プログラミング言語そのものに含まれている、基本的なライブラリのことです。尚、標準ライブラリ以外のライブラリは、外部ライブラリと呼びます。
ウィンドウを作成
# 新しいウィンドウを作成
root = tkinter.Tk()
Tkinter.Tk()
でルートウィンドウを作成し、変数 root
に格納します。ルートウィンドウとは、基盤となるウィンドウのことです。
ウィンドウにタイトルを設定
# ウィンドウのタイトルを設定
root.title('メニュー画面')
root
オブジェクトに対して title
メソッドを使いタイトル名を設定します。ここでは例として「メニュー画面」というタイトルにしています。
ことばの意味
- オブジェクト
データとそれを操作するための手続きをひとつにまとめたものです。 - メソッド
オブジェクトに対して実行される操作のことです。
ウィンドウのサイズを設定
# ウィンドウのサイズを設定
root.geometry('300x200')
root
オブジェクトに対して geometry
メソッドを使いサイズを設定します。geometry('横方向×縦方向')の順で指定します。単位はピクセルです。
フレームを作成
# フレームを作成
frame = tkinter.Frame(root, borderwidth=2, relief='groove')
tkinter.Frame
でフレームを作成し、変数 frame に格納します。フレームは他のウィジェットをグルーピングするためのコンテナウィジェットです。
()の中は引数です。それぞれ下表のような意味があります。
引数 | 意味 |
---|---|
root | 親ウィジェットの指定です。第一引数は自動的に親ウィジェットを表します。 |
borderwidth=2 | 境界線の幅の指定です。単位はピクセルです。 |
relief='groove' | 境界線のスタイルです。 |
relief のオプションには下表のようなものがあります。
relief のオプション | 意味 |
---|---|
flat | 境界線無し |
groove | フレームの境界が溝状 |
raised | ウィジェットが浮き出して見える |
ridge | フレームの境界が凸状 |
solid | 一定の太さの線 |
sunken | ウィジェットが凹んで見える |
ことばの意味
- 引数
プログラムや関数、メソッドに渡す値のことです。プログラムや関数、メソッドは、受け渡された値を元にして処理を行います。 - ウィジェット
ボタンやテキスト等のGUIの部品のことです。
フレームを配置
# フレームを配置
frame.pack(fill='both', expand=True, padx=5, pady=5)
frame
オブジェクトに対して pack
メソッドを使いフレームを配置します。
()の中は引数です。それぞれの引数の意味は下表の通りです。
引数 | 意味 |
---|---|
fill='both' |
このウィジェットが親ウィジェット内でどのように拡大するかを指定します。both を指定すると水平方向と垂直方向の両方に拡大します。 |
expand=True |
expand=True は親ウィジェットが拡大した場合、このウィジェットもそれに合わせて拡大する指定です。 |
padx=5、pady=5 |
ウィジェット周囲に追加する余白(Padding)の設定です。padx=5は左右に5ピクセル、pady=5は上下に5ピクセルの余白を設定します。 |
ボタンを作成
# ボタンを作成
btn = tkinter.Button(frame, text='実行', width=10, height=2)
tkinter.Button
でボタンを作成し、変数 btn
に格納します。()の中は引数です。それぞれの引数の意味は下表の通りです。
引数 | 意味 |
---|---|
frame | 親ウィジェットの指定です。第一引数は自動的に親ウィジェットを表します。 |
text='実行' | ボタンに表示するテキストです。ここでは「実行」というテキストを指定しています。 |
width=10 | ボタンの幅の指定です。width=10 はボタンの幅を10文字分に指定します。 |
height=2 | ボタンの高さの指定です。height=2 はボタンの高さを2文字分に指定します。 |
ボタンを配置
# ボタンを配置
btn.place(relx=0.5, rely=0.5, anchor='center')
btn
オブジェクトに対して place
メソッドを用いボタンを配置します。()の中は引数です。それぞれ下表のような意味があります。
引数 | 意味 |
---|---|
relx=0.5、rely=0.5 | ウィジェットを親ウィンドウの幅と高さの50%の位置に配置する指定です。 |
anchor='center' | ウィジェットの「中心」を、relx と rely で指定した位置に配置する指定です。 |
イベントループを開始
# イベントループ開始(ユーザーからの入力を待つ状態)
root.mainloop()
イベントループを開始します。
イベントとは、ユーザーの操作やシステム内の特定の状態の変化などのことです。例えば、ユーザーがボタンをクリックした時や、ファイルの読み込みが完了した時などがイベントとして扱われます。
プログラムがイベントを待ち、イベントが起こると適切な処理を実行し、次のイベントを待つ、という一連の流れが繰り返されるため、ループと呼ばれます。
root.mainloop()
は Tkinter ウィンドウを表示し、ユーザーがウィンドウ内での操作を行えるようにするためのイベントループを開始します。これは、ウィンドウが閉じられるまで実行し続けます。
以上で解説は終了です。ご覧いただきありがとうございました。
まとめ
今回は、ウィンドウに1つのボタンを配置したシンプルなGUIを作成しました。
このままでは、このボタンを押しても何も起こりません。なぜなら、ボタンに対応する動作をまだ実装していないからです。
実際のアプリケーションは、このボタンのクリックを起点に何らかの動作をするように作成します。
これについては、別記事で解説していきたいと思います。
おわりに
ご覧いただきありがとうございました。
今回の記事では、Python の標準ライブラリであり最も手軽な「Tkinter」を使用して、デスクトップアプリのメニュー画面(GUI、グラフィカル・ユーザー・インターフェース)を作成する方法を解説いたしました。
お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。
皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。
尚、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。
記事関連経験
- Python 3 エンジニア認定基礎試験
経済産業省が定めたガイドライン「ITスキル標準(ITSS)」に掲載されている民間資格です。 - Python 使用経験 約5年
実務に使用する アプリを多数作成してきました。
Python プログラミングスキルアップのための参考情報
ここでは参考図書を紹介いたしますが、これに限らず自分に合うものを選ぶことが重要だと考えております。皆様の、より一層のご成功を心からお祈りしております。
「独学プログラマー」というPythonを題材にした書籍は大変勉強になりました。Pythonの技術解説だけにとどまらず、プログラミングの魅力や基本的な知識、思考法、仕事の進め方まで幅広く学べます。
こちらの記事でも紹介しております。もしよろしければご覧ください。
また、Pythonに関する書籍は多数出版されています。興味のある方は、チェックしてみてください。
\チェックしてみよう/
\チェックしてみよう/
\チェックしてみよう/