【簡単Python】デスクトップアプリのメニュー画面(GUI)を作成する簡単な方法|Tkinter

アフィリエイト広告を利用しています。
【QRコード】PC<--->スマホの切り替えにご利用ください
運営者・ポテ

いつもありがとうございます!

「ノンプログラマー向けPython解説シリーズ」へようこそ。

本稿では、Pythonの標準ライブラリであり最も手軽な「tkinter」(ティー・ケー・インター)を使って、デスクトップアプリのメニュー画面(GUI: グラフィカル・ユーザー・インターフェース)を作成する方法を解説いたします。

なんと実質10行ほどの非常にシンプルな方法です。初心者でも簡単に作成することができます。

Information
  • ライブラリ
    特定の機能をもったコードの集合体です。ソフトウェア作成における部品のようなものです。新しいアプリケーションを作成する際、ライブラリを使用することで、プログラマーは複雑なコードを自分で書く必要がなくなります。
  • デスクトップアプリ
    パソコンで使うソフトウェアのことです。
  • 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(グラフィカルユーザーインターフェース)を作成するためのツールキットです。

Information

標準ライブラリ
プログラミング言語そのものに含まれている、基本的なライブラリのことです。尚、標準ライブラリ以外のライブラリは、外部ライブラリと呼びます。

ウィンドウを作成

# 新しいウィンドウを作成
root = tkinter.Tk()

Tkinter.Tk() でルートウィンドウを作成し、変数 root に格納します。ルートウィンドウとは、基盤となるウィンドウのことです。

ウィンドウにタイトルを設定

# ウィンドウのタイトルを設定
root.title('メニュー画面')

root オブジェクトに対して title メソッドを使いタイトル名を設定します。ここでは例として「メニュー画面」というタイトルにしています。

Information
  • オブジェクト
    データとそれを操作するための手続きをひとつにまとめたものです。
  • メソッド
    オブジェクトに対して実行される操作のことです。

ウィンドウのサイズを設定

# ウィンドウのサイズを設定
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ウィジェットが凹んで見える
Information
  • 引数
    プログラムや関数、メソッドに渡す値のことです。プログラムや関数、メソッドは、受け渡された値を元にして処理を行います。
  • ウィジェット
    ボタンやテキスト等の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 プログラミングスキルアップのための参考情報

ここでは参考図書を紹介いたしますが、これに限らず自分に合うものを選ぶことが重要だと考えております。皆様の、より一層のご成功を心からお祈りしております。


「独学プログラマー」というPythonを題材にした書籍は大変勉強になりました。Pythonの技術解説だけにとどまらず、プログラミングの魅力や基本的な知識、思考法、仕事の進め方まで幅広く学べます。


こちらの記事でも紹介しております。もしよろしければご覧ください。


また、Pythonに関する書籍は多数出版されています。興味のある方は、チェックしてみてください。

\チェックしてみよう/

\チェックしてみよう/

\チェックしてみよう/

【QRコード】PC<--->スマホの切り替えにご利用ください

おわりに

運営者・ポテ

ご覧いただきありがとうございました!

今回の記事では、Python の標準ライブラリであり最も手軽な「Tkinter」を使用して、デスクトップアプリのメニュー画面(GUI、グラフィカル・ユーザー・インターフェース)を作成する方法を解説いたしました。

お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。

皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。

なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。

この記事を書いた人

運営者・ポテ
■人生を追求する凡人■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢■光学・機械系エンジニア(歴20年、内マネジメント10年、特許数件権利化)/副業フリーランスエンジニア■読書・文学愛好■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を研究。■VBAアプリ開発サービス提供中(業務委託 / VBA使用経験20年)■Python愛好(歴5年)■VBAエキスパート「Excel VBA スタンダード」(上級者向け資格)/ Python 3 エンジニア認定基礎(経済産業省「ITスキル標準(ITSS)」に掲載)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です