見出し画像

【Python講座】 GUIアプリ作成の勧め

みなさんこんにちは、すっかり季節は冬という感じで、肌寒い季節になりました。いかがお過ごしでしょうか。

最近のChatGPTの進化も素晴らしいですね。GPT4oも、地道にアップデートを重ねているようですね。o1 Previewが必ずしも上ではないというのも感じています。得て不得手というのがありそうですね。

ChatGPTを使ってPythonのコードを書き、VSコードのエディタで実行させるのも、プログラムの勉強ということならわかるけれど、完成アプリの実行環境という面ではスマートではないし、Python学習者以外に使ってもらうにもハードルが高いと思います。

慣れ親しんでいるWindowsやMacと同様のインターフェースでPythonアプリを操作できたらどんなに楽でしょう。

そんな方法がPythonには用意されているので使わない手はありません。

tkinterやFLETなど様々用意されています。

その場合の実行ステップはこんな感じです。

Pythonの.pyファイルをダブルクリック。それだけで、Pythonを実行するをOKしさえすればアプリの画面が立ち上がり、ボタンやダイアログで操作が可能なGUIが立ち上がります。拡張子.pyとPythonのIDLEエディタを関連づけしてください。

学習初期では無味乾燥なグレー地にボタンが並ぶだけの地味な画面ですが、勉強していくうちに使いやすくカスタマイズすることができるようになるでしょう。

ChatGPTでコードを作って、エラー対策してってやっていくと一応動くものは作れるんだけれど、自分の力になっているかというと疑問符も浮かびます。

そこは少しずつでも内容を理解したり、自力で改善していくことで実力をつけることにつながると思います。

やはり、基礎からまとまった情報の掲載されている書籍は心強いと思います。

以下は、PythonでGUI(グラフィカルユーザーインターフェース)を作成するためのライブラリ「Tkinter」の入門記事です。Tkinterを使って簡単なウィンドウを作成する手順をステップバイステップで紹介します。

1. Tkinterのインストールと準備

Pythonには標準ライブラリとしてTkinterが含まれているため、追加のインストールは不要です。Pythonがインストールされていれば、Tkinterも使える状態になっています。

import tkinter as tk

2. 最初のウィンドウを作成する

Tkinterを使う際は、まず「ルートウィンドウ(メインウィンドウ)」を作成します。

import tkinter as tk

# ルートウィンドウの作成
root = tk.Tk()

# ウィンドウのタイトルを設定
root.title("Tkinter入門")

# ウィンドウのサイズを設定
root.geometry("400x300")

# ウィンドウの表示
root.mainloop()

root.mainloop()はウィンドウを表示し、イベント(クリックやキーボード入力など)を待機するループを開始します。この行がないと、ウィンドウが一瞬で閉じてしまいます。

3. ラベルの追加

次に、テキストを表示するための「ラベル」を追加してみましょう。

# ラベルの作成
label = tk.Label(root, text="こんにちは、Tkinter!")

# ラベルをウィンドウに配置
label.pack()

pack()はウィジェット(ここではラベル)をウィンドウに配置するメソッドです。他にもplace()やgrid()といった配置メソッドがありますが、簡単なレイアウトにはpack()が便利です。

4. ボタンの追加

次に、クリックするとメッセージが表示される「ボタン」を追加します。

# ボタンがクリックされたときに実行される関数
def on_button_click():
label.config(text="ボタンがクリックされました!")

# ボタンの作成
button = tk.Button(root, text="クリックしてね", command=on_button_click)

# ボタンをウィンドウに配置
button.pack()

ここでは、ボタンがクリックされたときにon_button_click関数が呼び出されるように、command引数に関数名を指定しています。

5. テキスト入力ボックスの追加

ユーザーからの入力を受け取るために「エントリ(テキスト入力ボックス)」を追加します。

# テキスト入力ボックスの作成
entry = tk.Entry(root)

# テキスト入力ボックスをウィンドウに配置
entry.pack()

# ボタンを改良して、入力を反映する
def on_button_click():
user_text = entry.get() # テキスト入力の内容を取得
label.config(text=f"入力されたテキスト: {user_text}")

button.config(command=on_button_click)

ここでは、entry.get()を使ってテキスト入力ボックスに入力された内容を取得し、ラベルに表示しています。

6. レイアウトの調整(pack, grid, place)

Tkinterには配置方法がいくつかあります。それぞれの配置方法を試してみましょう。

pack() を使った配置

pack()はウィジェットを上から順に配置します。配置がシンプルなときに便利です。

label.pack()
entry.pack()
button.pack()

grid() を使った配置

grid()を使うと、行と列を指定してウィジェットを配置できます。

label.grid(row=0, column=0)
entry.grid(row=1, column=0)
button.grid(row=2, column=0)

grid()は行と列の番号を指定するため、ウィジェットを整然と配置したい場合に便利です。

place() を使った配置

place()では、ピクセル単位で位置を指定して配置します。

label.place(x=50, y=50)
entry.place(x=50, y=100)
button.place(x=50, y=150)

7. 応用例:シンプルな電卓を作る

ここまでの知識を使って、簡単な足し算電卓を作ってみましょう。

import tkinter as tk

def calculate():
try:
# 入力された値を取得して計算
num1 = float(entry1.get())
num2 = float(entry2.get())
result = num1 + num2
label_result.config(text=f"結果: {result}")
except ValueError:
label_result.config(text="数値を入力してください")

# メインウィンドウ
root = tk.Tk()
root.title("簡単な電卓")
root.geometry("300x200")

# ウィジェットの作成
label1 = tk.Label(root, text="数値1:")
entry1 = tk.Entry(root)
label2 = tk.Label(root, text="数値2:")
entry2 = tk.Entry(root)
button = tk.Button(root, text="足し算", command=calculate)
label_result = tk.Label(root, text="結果:")

# 配置
label1.pack()
entry1.pack()
label2.pack()
entry2.pack()
button.pack()
label_result.pack()

root.mainloop()

これで、2つの数値を入力して「足し算」ボタンを押すと、その結果が表示される簡単な電卓が完成しました。

まとめ

今回は、Tkinterを使って基本的なGUIアプリケーションの作成手順を紹介しました。この他にも、CheckbuttonやRadioButton、Canvasなど多くのウィジェットがあります。

この記事が気に入ったらサポートをしてみませんか?