PythonのTkinterを使って家計簿(貯蓄計算)アプリを作る方法

スポンサーリンク

今日はPythonのTkinterモジュールを使って、シンプルでGUIな貯金計算機を作ってみましょう。

このアプリケーションは、ある人の給料と、旅行、食事、雑費などの支出を引き受け、その人の貯蓄額を計算します。

アプリケーションを作成するために、私たちは次のことを行います。

    1. 必要なライブラリ(ここでは tkinter ライブラリ)をインポートします。
  1. メインウィンドウを作成する
  2. メインウィンドウに任意の数のウィジェットを追加する (Button、Entry、Label)
  3. ボタンにイベント機能を適用する
スポンサーリンク

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()

アプリケーションに機能を追加する

機能を追加するためには、entrybutton ウィジェットの両方を考慮する必要があります。

エントリーボックスの動作

各エントリボックスには、その値を格納するための変数を作成します。

整数の値を格納する変数を作成するには、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で貯蓄計算機を実装する

このアプリケーションの完全なコードは以下のとおりです。

Final Design Savings Calculator
Final Design Savings Calculator

出力 このアプリケーションは様々な数値についてテストされました。

そのうちのいくつかを以下に示す。

Output1 Salary Calculator
Output1 Salary Calculator
Output2 Salary Calculator
Output2 Salary Calculator

まとめ

あなたは、独自の給与計算機を構築する方法を学ぶことに成功しました。

読んでくれてありがとうございました! ハッピーコーディング!

タイトルとURLをコピーしました