Pythonでのデスクトップアプリケーション開発に使用される代表的なGUIツールキットであるTkinterについて詳しく学び、簡単なアプリケーションを作成していきます。TkinterはPythonに標準で組み込まれているため、追加のインストールなしで始めることができ、シンプルでありながら多機能なアプリを作成するための基礎を提供してくれます。
デスクトップアプリを作成するためには、ユーザーとアプリケーションがやり取りするためのウィジェットが必要です。ウィジェットは、ボタンやテキスト入力フィールドなど、ユーザーが操作できるGUI要素です。Tkinterには、基本的なウィジェットが数多く用意されています。この章では、その中でも頻繁に使用されるウィジェットを紹介します。
Labelは、単にテキストを表示するためのウィジェットです。例えば、アプリケーションのタイトルや説明文を表示する際に使用します。
import tkinter as tk
# メインウィンドウの作成
root = tk.Tk()
# ラベルウィジェットの作成
label = tk.Label(root, text="これはラベルです")
# ラベルの配置
label.pack()
# メインループの開始
root.mainloop()
このコードはシンプルなウィンドウを作成し、その中に「これはラベルです」というテキストを表示します。Label
のtext
引数を変更することで、表示内容を簡単にカスタマイズできます。
次に、ユーザーがクリックできる**ボタン(Button)**ウィジェットを紹介します。ボタンは、クリックされると特定のアクションを実行するための重要なGUI要素です。
import tkinter as tk
# ボタンを押したときに実行される関数
def on_button_click():
print("ボタンが押されました")
# メインウィンドウの作成
root = tk.Tk()
# ボタンウィジェットの作成
button = tk.Button(root, text="クリックしてね", command=on_button_click)
# ボタンの配置
button.pack()
# メインループの開始
root.mainloop()
このコードでは、ボタンがクリックされたときにon_button_click
関数が呼び出され、コンソールにメッセージが表示されます。command
引数に関数を渡すことで、ボタンがクリックされた際のアクションを指定できます。
ユーザーからテキストを入力してもらうためには、Entryウィジェットを使用します。例えば、名前やメールアドレスを入力するフォームに使用します。
import tkinter as tk
# メインウィンドウの作成
root = tk.Tk()
# テキスト入力フィールドの作成
entry = tk.Entry(root)
# テキスト入力フィールドの配置
entry.pack()
# メインループの開始
root.mainloop()
上記のコードでは、ウィンドウにテキスト入力フィールドが表示され、ユーザーが自由に文字を入力できます。Entry
ウィジェットを使用することで、簡単に入力フォームを作成できます。
Tkinterを使ってアプリケーションのウィンドウを作成することは非常に簡単です。上記の例でも使われたTk()
は、アプリケーションのメインウィンドウを作成します。これは、ユーザーが操作するアプリの主なインターフェースとなります。
メインウィンドウはtk.Tk()
によって作成され、root
という変数に格納されます。このウィンドウには、後ほどウィジェット(ボタンやラベルなど)を配置していきます。例えば次のように、ウィンドウのタイトルやサイズをカスタマイズすることが可能です。
import tkinter as tk
# メインウィンドウの作成
root = tk.Tk()
# ウィンドウのタイトルを設定
root.title("簡単なアプリ")
# ウィンドウのサイズを設定
root.geometry("300x200")
# メインループの開始
root.mainloop()
このコードでは、ウィンドウのタイトルを「簡単なアプリ」に設定し、サイズを幅300ピクセル、高さ200ピクセルに指定しています。ウィンドウのサイズはgeometry
メソッドで自由にカスタマイズできます。
Tkinterでは、ウィジェットをウィンドウ内に配置するためのいくつかの方法があります。主に次の3つが使われます。
例として、pack()
メソッドを使ってボタンやラベルを縦に並べてみましょう。
import tkinter as tk
# メインウィンドウの作成
root = tk.Tk()
# ラベルとボタンを作成
label = tk.Label(root, text="上に表示されるラベル")
button = tk.Button(root, text="下に表示されるボタン")
# ラベルとボタンを配置
label.pack()
button.pack()
# メインループの開始
root.mainloop()
pack()
を使用することで、ウィジェットが上下に自動的に配置されます。配置順は、コードの記述順に依存します。
一方、複雑なレイアウトを実現するためには、grid()
メソッドを使用します。以下にグリッド配置の例を示します。
import tkinter as tk
# メインウィンドウの作成
root = tk.Tk()
# ラベルとボタンを作成
label = tk.Label(root, text="名前")
entry = tk.Entry(root)
submit_button = tk.Button(root, text="送信")
# グリッドでウィジェットを配置
label.grid(row=0, column=0)
entry.grid(row=0, column=1)
submit_button.grid(row=1, columnspan=2)
# メインループの開始
root.mainloop()
このコードでは、grid()
メソッドを使用して、ラベル、テキスト入力フィールド、ボタンをグリッド状に配置しています。row
とcolumn
で指定された行列の位置にウィジェットが配置され、columnspan
を使用してボタンが複数列にまたがるように配置されています。
GUIアプリケーションでは、ユーザーの操作(ボタンをクリックしたり、キーを押したり)に応じて、プログラムが特定の動作を行う必要があります。これをイベント駆動型プログラミングと呼びます。
Tkinterでは、各ウィジェットがユーザーのアクションに応じてイベントを発生させ、それに対してプログラムが反応します。例えば、ボタンのクリック、テキストの入力、ウィンドウの閉じるボタンを押すといった操作はすべてイベントです。
イベントに反応するためには、Tkinterのウィジェットにコールバック関数を関連付けます。コールバック関数は、特定のイベントが発生したときに実行される関数です。
例えば、次のコードはボタンがクリックされたときに特定のアクションを実行するものです。
import tkinter as tk
# ボタンを押したときに呼ばれるコールバック関数
def on_click():
print("クリックされました!")
# メインウィンドウの作成
root = tk.Tk()
# ボタンの作成とコールバック関数の関連付け
button = tk.Button(root, text="クリック", command=on_click)
# ボタンの配置
button.pack()
# メインループの開始
root.mainloop()
このコードでは、ボタンがクリックされるたびにon_click
関数が呼び出され、コンソールにメッセージが表示されます。command
引数を使うことで、ボタンとコールバック関数を簡単に関連付けることができます。
ボタンのクリックだけでなく、キーボード操作もイベントとして処理することができます。次に、ユーザーが特定のキーを押したときに反応する例を見てみましょう。
import tkinter as tk
# キーが押されたときに呼ばれる関数
def on_key_press(event):
print(f"{event.char}キーが押されました")
# メインウィンドウの作成
root = tk.Tk()
# ウィンドウにキーイベントをバインド
root.bind("<KeyPress>", on_key_press)
# メインループの開始
root.mainloop()
このコードでは、任意のキーが押されたときにon_key_press
関数が呼び出され、押されたキーの文字が表示されます。bind
メソッドを使用して、イベントを特定のウィジェットにバインドすることができます。
この章では、Tkinterの基本的なウィジェットであるラベル、ボタン、テキスト入力フィールドの使い方と、ウィンドウの作成と配置方法について学びました。また、イベント駆動型プログラミングの基本として、ボタンのクリックやキーボードイベントの処理についても解説しました。
ここまでで、簡単なTkinterアプリケーションを作成するための基礎が身についたと思います。
プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。
独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。
プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:
どちらが自分に合っているか、よく考えて選ぶのが大事です。
プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:
なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。
カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。
独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
↓ ↓ こちらをクリック ↓ ↓