Python Tkinterで作る簡単な登録フォーム入門
Tkinterは、GUI(グラフィカルユーザーインターフェース)を開発するためのPython標準ライブラリです。Tkinterを使うことで、ウィンドウをはじめとするさまざまなUI(ユーザーインターフェース)要素を持つデスクトップアプリケーションを作成できます。
推奨されているPython 3.xを使用している場合、TkinterはPythonに標準搭載されているパッケージなので、追加のインストールは一切不要です。
この記事では、まずTkinterの基本的なGUIアプリケーションの作り方を解説し、その後、実際の登録フォームやローン金利計算ツールといった実用的な例まで段階的に見ていきます。
シンプルなGUIアプリケーションの作成
まずは、Tkinterをインポートしてウィンドウを作成し、タイトルを設定するだけの簡単なプログラムから始めましょう。
from tkinter import *
from tkinter import ttk
window = Tk()
window.title("Welcome to TutorialsPoint")
window.geometry('325x250')
window.configure(background = "gray")
ttk.Button(window, text="Hello, Tkinter").grid()
window.mainloop()上記のコードを実行すると、次のような出力が表示されます。
コードの解説
まず、必要なモジュールをすべてインポートします。ここでは、tkinterライブラリから
*(すべて)とttkをインポートしています。Tkクラスを使用して、アプリケーションのメインウィンドウを作成します。window.title()は、ウィンドウアプリにタイトルを設定します。window.geometry()はウィンドウのサイズを設定し、window.configure()は背景色を設定します。ttk.Button()はボタンを生成します。ttk.Button(window, text="Hello, Tkinter").grid()— 第1引数のwindowは親ウィンドウを意味し、そこにボタンが表示されます。textはウィンドウ内に表示されるテキスト、gridはグリッドレイアウトで配置するためのメソッドです。window.mainloop()は、ウィンドウの無限ループ(イベントループ)を開始する関数です。ユーザーがウィンドウを閉じるまで、アプリケーションは起動し続けます。
ラベルと入力フィールドを追加する
次に、先ほどの例を拡張して、いくつかのラベル(Label)とボタン(Button)をコードに追加してみましょう。ラベルはテキストや画像を表示するだけのシンプルなウィジェットで、ボタンはクリックなどのユーザーの操作に対応してアクションを実行するウィジェットです。
from tkinter import *
from tkinter import ttk
window = Tk()
window.title("Welcome to TutorialsPoint")
window.geometry('400x400')
window.configure(background = "grey");
a = Label(window ,text = "First Name").grid(row = 0,column = 0)
b = Label(window ,text = "Last Name").grid(row = 1,column = 0)
c = Label(window ,text = "Email Id").grid(row = 2,column = 0)
d = Label(window ,text = "Contact Number").grid(row = 3,column = 0)
a1 = Entry(window).grid(row = 0,column = 1)
b1 = Entry(window).grid(row = 1,column = 1)
c1 = Entry(window).grid(row = 2,column = 1)
d1 = Entry(window).grid(row = 3,column = 1)
def clicked():
res = "Welcome to " + txt.get()
lbl.configure(text= res)
btn = ttk.Button(window ,text="Submit").grid(row=4,column=0)
window.mainloop()このコードでは、「名前」「姓」「メールアドレス」「電話番号」といった登録フォームに必要な項目を、グリッドレイアウトを使って整然と配置しています。Entryウィジェットが各項目のテキスト入力欄に相当し、これが登録フォームの基本形となります。
上記のコードを実行すると、次のような画面が出力されます。
実践編:ローン返済計算ツールを作ってみよう
続いて、もう少し実用的なものとして、ローン返済計算ツールを作成してみましょう。そのためには、元本(借入額)、金利(r)、s回目の支払い後の残高(Bs)など、いくつかの変数が必要になります。s回の支払い後のローン残高を計算するには、以下の公式を使用します。
Ps = ((1+r)^s.Bo) − (((1 + r)^s − 1)/ r)*p
各記号の意味は以下の通りです。
Rate = 金利(年利)。例:7.5%
i = rate/100 — 小数表記した年間利率
r = 期間利率 = i/12
Po = 元本(借入金額)
Ps = s回の支払い後の残高
s = 月々の支払い回数
p = 期間(月)ごとの支払額
以下は、この公式を利用した金利計算プログラムです。ポップアップウィンドウが表示され、ユーザーが希望の値(借入金額、金利、支払回数)を入力すると、PythonのTkinterライブラリを使って毎月の支払額と残りの返済額を計算して表示します。
from tkinter import *
fields = ('Annual Rate', 'Number of Payments', 'Loan Principle', 'Monthly Payment', 'Remaining Loan')
def monthly_payment(entries):
# 期間利率:
r = (float(entries['Annual Rate'].get()) / 100) / 12
print("r", r)
# 借入元本:
loan = float(entries['Loan Principle'].get())
n = float(entries['Number of Payments'].get())
remaining_loan = float(entries['Remaining Loan'].get())
q = (1 + r)** n
monthly = r * ( (q * loan - remaining_loan) / ( q - 1 ))
monthly = ("%8.2f" % monthly).strip()
entries['Monthly Payment'].delete(0,END)
entries['Monthly Payment'].insert(0, monthly )
print("Monthly Payment: %f" % float(monthly))
def final_balance(entries):
# 期間利率:
r = (float(entries['Annual Rate'].get()) / 100) / 12
print("r", r)
# 借入元本:
loan = float(entries['Loan Principle'].get())
n = float(entries['Number of Payments'].get())
q = (1 + r)** n
monthly = float(entries['Monthly Payment'].get())
q = (1 + r)** n
remaining = q * loan - ( (q - 1) / r) * monthly
remaining = ("%8.2f" % remaining).strip()
entries['Remaining Loan'].delete(0,END)
entries['Remaining Loan'].insert(0, remaining )
print("Remaining Loan: %f" % float(remaining))
def makeform(root, fields):
entries = {}
for field in fields:
row = Frame(root)
lab = Label(row, width=22, text=field+": ", anchor='w')
ent = Entry(row)
ent.insert(0,"0")
row.pack(side = TOP, fill = X, padx = 5 , pady = 5)
lab.pack(side = LEFT)
ent.pack(side = RIGHT, expand = YES, fill = X)
entries[field] = ent
return entries
if __name__ == '__main__':
root = Tk()
ents = makeform(root, fields)
root.bind('<Return>', (lambda event, e = ents: fetch(e)))
b1 = Button(root, text = 'Final Balance',
command=(lambda e = ents: final_balance(e)))
b1.pack(side = LEFT, padx = 5, pady = 5)
b2 = Button(root, text='Monthly Payment',
command=(lambda e = ents: monthly_payment(e)))
b2.pack(side = LEFT, padx = 5, pady = 5)
b3 = Button(root, text = 'Quit', command = root.quit)
b3.pack(side = LEFT, padx = 5, pady = 5)
root.mainloop()実行結果
このプログラムを実行すると、借入金額・金利・支払回数を入力するだけで、「最終残高(Final Balance)」と「毎月の支払額(Monthly Payment)」をワンタッチで計算できることが確認できます。
このように、Tkinterを使えば数行のコードから本格的なデスクトップアプリケーションまで、幅広いGUIアプリケーションを手軽に構築できます。まずはシンプルなウィンドウ作成から始めて、ラベルやエントリー、ボタンなどを組み合わせながら、自分だけのアプリケーション開発に挑戦してみてください。
-
PythonとTkinterで作る!初心者向けシンプルGUI計算機の作り方
このチュートリアルでは、Pythonの標準モジュールTkinterを使用して、シンプルなGUI計算機を作成します。TkinterはPythonに組み込まれているGUIアプリケーション開発用のモジュールで、追加インストールが不要で手軽に使えるのが魅力です。GUIアプリケーションを活用すれば、データや計算結果を視覚的にわかりやすく操作できます。 それでは、シンプルなGUI計算機の作り方を見ていきましょう。 作成の手順 Tkinterからすべての機能を「*」でインポートします。 計算機のインターフェース(ウィンドウ)を作成します。 入力フィールドに数字を入力する関数(input_number)を作
-
【Python】Tkinterで作るカラーゲーム – 30秒で文字の色を当てるGUIゲーム開発
GUIアプリケーションの開発において、Pythonの標準ライブラリ「Tkinter」は非常に人気が高く、初心者でも扱いやすいツールです。追加のインストール作業なしに使えるため、Tkinterを活用すればシンプルなGUIゲームでも手軽に開発できます。 この記事では、Tkinterを使った「カラーゲーム」の作り方を紹介します。このゲームでは、画面に表示される単語の文字色をプレイヤーが入力し、正解するたびにスコアが1点ずつ加算されます。制限時間は30秒で、使用される色は赤(Red)、青(Blue)、緑(Green)、ピンク(Pink)、黒(Black)、黄(Yellow)、オレンジ(Orange)、