I was trying to add tkinter
graphics to a small part of my code for some reason and want the output(calculated sum) on window.How did I make this code working please help!
my code:
JavaScript
x
59
59
1
import tkinter as tk
2
from tkinter import *
3
4
window = tk.Tk()
5
window.geometry('400x600')
6
window.resizable(0, 0)
7
window.title("HACKER-simple interest setup")
8
9
# define entry variables
10
n1 = StringVar()
11
n2 = StringVar()
12
n3 = StringVar()
13
14
15
def simple_interest(*x):
16
global principal, time
17
principal = float(principal.get())
18
time = float(time.get())
19
interest_rate = float(ir.get())
20
21
# simple interest calculating engine
22
simple_interest(Simple_Interest=principal * (interest_rate / 100) * time)
23
24
Output = Text(window, width=25, bg="light cyan")
25
Output.grid(column=0, row=4)
26
Output.place(x=150, y=300)
27
Output.insert(END, "Simple_Interest:", simple_interest)
28
29
30
lbl = Label(window, text="Principal:", font=("Aerial Bold Italic", 15))
31
lbl.grid(column=0, row=4)
32
lbl.place(x=45, y=125)
33
34
lbl = Label(window, text="Time:", font=("Aerial Bold Italic", 15))
35
lbl.grid(column=0, row=4)
36
lbl.place(x=70, y=150)
37
38
lbl = Label(window, text="Interest rate:", font=("Aerial Bold Italic", 15))
39
lbl.grid(column=0, row=4)
40
lbl.place(x=12, y=170)
41
42
principal = tk.Entry(window, textvariable=n1, width=40)
43
principal.grid(column=0, row=4)
44
principal.place(x=130, y=130)
45
46
time = tk.Entry(window, textvariable=n2, width=40)
47
time.grid(column=0, row=4)
48
time.place(x=130, y=150)
49
50
ir = tk.Entry(window, textvariable=n3, width=40)
51
ir.grid(column=0, row=4)
52
ir.place(x=130, y=170)
53
54
btn = Button(window, text="Calculate", bg="red", fg="white", command=simple_interest)
55
btn.grid(column=0, row=5)
56
btn.place(x=220, y=200)
57
58
window.mainloop()
59
getting error:
JavaScript
1
9
1
C:UsersAnmolAppDataLocalProgramsPythonPython38python.exe "D:/Downloads/si test.py"
2
Exception in Tkinter callback
3
Traceback (most recent call last):
4
File "C:UsersAnmolAppDataLocalProgramsPythonPython38libtkinter__init__.py", line 1892, in __call__
5
return self.func(*args)
6
File "D:/Downloads/si test.py", line 22, in simple_interest
7
simple_interest(Simple_Interest=principal * (interest_rate / 100) * time)
8
TypeError: simple_interest() got an unexpected keyword argument 'Simple_Interest'
9
Advertisement
Answer
I think you can use Simple_Interest=principal * (interest_rate / 100) * time
at line 22.
And you should use the “if” statement in line 17-19
JavaScript
1
59
59
1
import tkinter as tk
2
from tkinter import *
3
4
window = tk.Tk()
5
window.geometry('400x600')
6
window.resizable(0, 0)
7
window.title("HACKER-simple interest setup")
8
9
# define entry variables
10
n1 = StringVar()
11
n2 = StringVar()
12
n3 = StringVar()
13
14
15
def simple_interest(*x):
16
global principal, time
17
principal = float(principal.get() if not isinstance(principal,float) else principal)
18
time = float(time.get()) if not isinstance(time,float) else time
19
interest_rate = float(ir.get()) if not isinstance(ir,float) else ir
20
21
# simple interest calculating engine
22
Simple_Interest=principal * (interest_rate / 100) * time
23
24
Output = Text(window, width=25, bg="light cyan")
25
Output.grid(column=0, row=4)
26
Output.place(x=150, y=300)
27
Output.insert(END, "Simple_Interest:n"+str(Simple_Interest))
28
29
30
lbl = Label(window, text="Principal:", font=("Aerial Bold Italic", 15))
31
lbl.grid(column=0, row=4)
32
lbl.place(x=45, y=125)
33
34
lbl = Label(window, text="Time:", font=("Aerial Bold Italic", 15))
35
lbl.grid(column=0, row=4)
36
lbl.place(x=70, y=150)
37
38
lbl = Label(window, text="Interest rate:", font=("Aerial Bold Italic", 15))
39
lbl.grid(column=0, row=4)
40
lbl.place(x=12, y=170)
41
42
principal = tk.Entry(window, textvariable=n1, width=40)
43
principal.grid(column=0, row=4)
44
principal.place(x=130, y=130)
45
46
time = tk.Entry(window, textvariable=n2, width=40)
47
time.grid(column=0, row=4)
48
time.place(x=130, y=150)
49
50
ir = tk.Entry(window, textvariable=n3, width=40)
51
ir.grid(column=0, row=4)
52
ir.place(x=130, y=170)
53
54
btn = Button(window, text="Calculate", bg="red", fg="white", command=simple_interest)
55
btn.grid(column=0, row=5)
56
btn.place(x=220, y=200)
57
58
window.mainloop()
59
It was worked!