今日は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で貯蓄計算機を実装する
このアプリケーションの完全なコードは以下のとおりです。
出力 このアプリケーションは様々な数値についてテストされました。
そのうちのいくつかを以下に示す。
まとめ
あなたは、独自の給与計算機を構築する方法を学ぶことに成功しました。
読んでくれてありがとうございました! ハッピーコーディング!