今日はPythonのTkinterモジュールを使って、シンプルでGUIな貯金計算機を作ってみましょう。
このアプリケーションは、ある人の給料と、旅行、食事、雑費などの支出を引き受け、その人の貯蓄額を計算します。
アプリケーションを作成するために、私たちは次のことを行います。
-
- 必要なライブラリ(ここでは
tkinterライブラリ)をインポートします。
- 必要なライブラリ(ここでは
- メインウィンドウを作成する
- メインウィンドウに任意の数のウィジェットを追加する (Button、Entry、Label)
- ボタンにイベント機能を適用する
この記事もチェック:PythonでTkinterを使ってGUIの電卓アプリを作成する方法
Pythonで貯蓄計算機をデザインする
アプリケーションの設計は、メインウィンドウの作成と設定を含みます。
また、画面上に必要なウィジェットをすべて追加することも含まれます。
そのためのコードを以下に示します。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import tkinter as tk
window = tk.Tk()
window.geometry("300x400")
window.config(bg="#F39C12")
window.resizable(width=False,height=False)
window.title('Savings Calculator')
l1 = tk.Label(window,text="Enter the Values",font=("Arial",20),fg="Black",bg="White")
l2 = tk.Label(window,text="Total Salary:",font=("Arial",10),fg="Black",bg="White")
e1 = tk.Entry(window,font=("Arial",11))
l3 = tk.Label(window,text="Travel:",font=("Arial",10),fg="Black",bg="White")
e2 = tk.Entry(window,font=("Arial",11))
l4 = tk.Label(window,text="Food:",font=("Arial",10),fg="Black",bg="White")
e3 = tk.Entry(window,font=("Arial",11))
l5 = tk.Label(window,text="Miscellaneous:",font=("Arial",10),fg="Black",bg="White")
e4 = tk.Entry(window,font=("Arial",11))
b1 = tk.Button(window,text="Calculate Savings",font=("Arial",15))
l6 = tk.Label(window,text="Your Savings:",font=("Arial",10),fg="Black",bg="White")
e5 = tk.Entry(window,font=("Arial",11),state='disabled')
b2 = tk.Button(window,text="Clear Values",font=("Arial",15))
b3 = tk.Button(window,text="Exit Application",font=("Arial",15))
l1.place(x=50,y=20)
l2.place(x=20,y=70)
e1.place(x=120,y=70)
l3.place(x=20,y=100)
e2.place(x=120,y=100)
l4.place(x=20,y=130)
e3.place(x=120,y=130)
l5.place(x=20,y=160)
e4.place(x=120,y=160)
b1.place(x=60,y=200)
l6.place(x=20,y=260)
e5.place(x=120,y=260)
b2.place(x=70,y=300)
b3.place(x=60,y=350)
window.mainloop() |
もし、使用したウィジェットについて何か問題や疑問があれば、ここのチュートリアルを参照することができます。
アプリケーションの最終的なデザインは、以下のとおりです。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import tkinter as tk
window = tk.Tk()
window.geometry("300x400")
window.config(bg="#F39C12")
window.resizable(width=False,height=False)
window.title('Savings Calculator')
v1 = tk.StringVar()
v2 = tk.StringVar()
v3 = tk.StringVar()
v4 = tk.StringVar()
v5 = tk.StringVar()
l1 = tk.Label(window,text="Enter the Values",font=("Arial",20),fg="Black",bg="White")
l2 = tk.Label(window,text="Total Salary:",font=("Arial",10),fg="Black",bg="White")
e1 = tk.Entry(window,font=("Arial",11),textvariable=v1)
l3 = tk.Label(window,text="Travel:",font=("Arial",10),fg="Black",bg="White")
e2 = tk.Entry(window,font=("Arial",11),textvariable=v2)
l4 = tk.Label(window,text="Food:",font=("Arial",10),fg="Black",bg="White")
e3 = tk.Entry(window,font=("Arial",11),textvariable=v3)
l5 = tk.Label(window,text="Miscellaneous:",font=("Arial",10),fg="Black",bg="White")
e4 = tk.Entry(window,font=("Arial",11),textvariable=v4)
b1 = tk.Button(window,text="Calculate Savings",font=("Arial",15))
l6 = tk.Label(window,text="Your Savings:",font=("Arial",10),fg="Black",bg="White")
e5 = tk.Entry(window,font=("Arial",11),state='disabled',textvariable=v5)
b2 = tk.Button(window,text="Clear Values",font=("Arial",15))
b3 = tk.Button(window,text="Exit Application",font=("Arial",15))
l1.place(x=50,y=20)
l2.place(x=20,y=70)
e1.place(x=120,y=70)
l3.place(x=20,y=100)
e2.place(x=120,y=100)
l4.place(x=20,y=130)
e3.place(x=120,y=130)
l5.place(x=20,y=160)
e4.place(x=120,y=160)
b1.place(x=60,y=200)
l6.place(x=20,y=260)
e5.place(x=120,y=260)
b2.place(x=70,y=300)
b3.place(x=60,y=350)
window.mainloop() |
アプリケーションに機能を追加する
機能を追加するためには、entry と button ウィジェットの両方を考慮する必要があります。
エントリーボックスの動作
各エントリボックスには、その値を格納するための変数を作成します。
整数の値を格納する変数を作成するには、StringVar関数を使用します。
各エントリボックスに一意の変数を割り当てた後、変数とエントリボックスを接続するために、エントリボックスの宣言に textvariable 属性を追加します。
そのためのコードを以下に示します。
このコードで行われた変更は、ハイライト表示されています。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
def exit():
window.destroy()
def clear_all():
e1.delete(0,tk.END)
e2.delete(0,tk.END)
e3.delete(0,tk.END)
e4.delete(0,tk.END)
e5.config(state='normal')
e5.delete(0,tk.END)
e5.config(state='disabled')
def cal_savings():
e5.config(state='normal')
e5.delete(0,tk.END)
e5.config(state='disabled')
salary = int(e1.get())
total_expenditure = int(e2.get())+int(e3.get())+int(e4.get())
savings = salary - total_expenditure
e5.config(state='normal')
e5.insert(0,savings)
e5.config(state='disabled')
|
ボタンの働き
このアプリケーションでは、3つのボタンがあります。
そのため、ボタンには3つの異なる機能を定義する予定です。
3つの機能のコードは、以下のように定義されています。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
def exit():
window.destroy()
def clear_all():
e1.delete(0,tk.END)
e2.delete(0,tk.END)
e3.delete(0,tk.END)
e4.delete(0,tk.END)
e5.config(state='normal')
e5.delete(0,tk.END)
e5.config(state='disabled')
def cal_savings():
e5.config(state='normal')
e5.delete(0,tk.END)
e5.config(state='disabled')
salary = int(e1.get())
total_expenditure = int(e2.get())+int(e3.get())+int(e4.get())
savings = salary - total_expenditure
e5.config(state='normal')
e5.insert(0,savings)
e5.config(state='disabled')
import tkinter as tk
window = tk.Tk()
window.geometry("300x400")
window.config(bg="#F39C12")
window.resizable(width=False,height=False)
window.title('Savings Calculator')
v1 = tk.StringVar()
v2 = tk.StringVar()
v3 = tk.StringVar()
v4 = tk.StringVar()
v5 = tk.StringVar()
l1 = tk.Label(window,text="Enter the Values",font=("Arial",20),fg="Black",bg="White")
l2 = tk.Label(window,text="Total Salary:",font=("Arial",10),fg="Black",bg="White")
e1 = tk.Entry(window,font=("Arial",11),textvariable=v1)
l3 = tk.Label(window,text="Travel:",font=("Arial",10),fg="Black",bg="White")
e2 = tk.Entry(window,font=("Arial",11),textvariable=v2)
l4 = tk.Label(window,text="Food:",font=("Arial",10),fg="Black",bg="White")
e3 = tk.Entry(window,font=("Arial",11),textvariable=v3)
l5 = tk.Label(window,text="Miscellaneous:",font=("Arial",10),fg="Black",bg="White")
e4 = tk.Entry(window,font=("Arial",11),textvariable=v4)
b1 = tk.Button(window,text="Calculate Savings",font=("Arial",15),command=cal_savings)
l6 = tk.Label(window,text="Your Savings:",font=("Arial",10),fg="Black",bg="White")
e5 = tk.Entry(window,font=("Arial",11),state='disabled',textvariable=v5)
b2 = tk.Button(window,text="Clear Values",font=("Arial",15),command=clear_all)
b3 = tk.Button(window,text="Exit Application",font=("Arial",15),command=exit)
l1.place(x=50,y=20)
l2.place(x=20,y=70)
e1.place(x=120,y=70)
l3.place(x=20,y=100)
e2.place(x=120,y=100)
l4.place(x=20,y=130)
e3.place(x=120,y=130)
l5.place(x=20,y=160)
e4.place(x=120,y=160)
b1.place(x=60,y=200)
l6.place(x=20,y=260)
e5.place(x=120,y=260)
b2.place(x=70,y=300)
b3.place(x=60,y=350)
window.mainloop() |
最初の関数では、作成したウィンドウを破棄するだけです。
2つ目の関数では、すべての入力ボックスの内容を削除します。
3番目の関数では、すべての支出値を合計し、給与総額と支出額の差を求めます。
しかし、その前に、新しい値を入れるスペースを確保するために、出力の入力ボックスを消去します。
そして、計算された値を出力入力ボックスの中に入れます。
関数を作成したら、commandパラメータをボタンの宣言に追加します。
これで完成です。
Tkinterで貯蓄計算機を実装する
このアプリケーションの完全なコードは以下のとおりです。

出力 このアプリケーションは様々な数値についてテストされました。
そのうちのいくつかを以下に示す。


まとめ
あなたは、独自の給与計算機を構築する方法を学ぶことに成功しました。
読んでくれてありがとうございました! ハッピーコーディング!