Posts: 2
Threads: 1
Joined: Dec 2018
Dec-20-2018, 07:59 PM
(This post was last modified: Dec-20-2018, 08:04 PM by ichabod801.)
Hello Everyone, i am stuck at the multiply function using Tkinter, any help is greatly appreciated. Addition seems to be fine.
from tkinter import *
def calc_sum(event):
num1 = int(num1Entry.get())
num2 = int(num2Entry.get())
sum = num1 + num2
sumTotalEntry.delete(0,sum)
sumTotalEntry.insert(0,sum)
def multiply_num(event):
num1= num1Entry.get()
num2= num2Entry.get()
mul= num1 * num2
#mulTotalEntry.delete(0,mul)
mulTotalEntry.insert(0,mul)
root=Tk()
num1Entry = Entry(root)
num1Entry.grid(row=0)
plusLabel = Label(root,text="+",font=("Verdana",8))
plusLabel.grid(row=0,column=1)
num2Entry = Entry(root)
num2Entry.grid(row=0,column=2)
equalButton=Button(root,text="=",font=("Verdana",8))
equalButton.bind('<Button-1>',calc_sum)
equalButton.grid(row=0,column=3)
sumTotalEntry=Entry(root)
sumTotalEntry.grid(row=0,column=4)
mul1Entry = Entry(root)
mul1Entry.grid(row=1)
mulLabel = Label(root,text="*",font=("Verdana",8))
mulLabel.grid(row=1,column=1)
mul2Entry = Entry(root)
mul2Entry.grid(row=1,column=2)
equalButton2=Button(root,text="=",font=("Verdana",8))
equalButton2.bind('<Button-1>',multiply_num)
equalButton2.grid(row=1,column=3)
mulTotalEntry=Entry(root)
mulTotalEntry.grid(row=1,column=4)
root.mainloop() Below is the error i get
Output: Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python35\lib\tkinter\__init__.py", line 1549, in __call__
return self.func(*args)
File "C:/Users/auppu/Downloads/Py/2.py", line 18, in multiply_num
mul= num1 * num2
TypeError: can't multiply sequence by non-int of type 'str'
Posts: 4,220
Threads: 97
Joined: Sep 2016
Please use python and output tags when posting code and results. The icode tags are for inline code .
Posts: 12,029
Threads: 485
Joined: Sep 2016
add print statements before line 18:
print('num1: {}, type num1: {}, num2: {}, type num2: {}'.format(num1, type(num1), num2, type(num2)))
Posts: 2
Threads: 1
Joined: Dec 2018
(Dec-20-2018, 11:48 PM)Larz60+ Wrote: add print statements before line 18:
print('num1: {}, type num1: {}, num2: {}, type num2: {}'.format(num1, type(num1), num2, type(num2)))
no luck
still see the same error
__
return self.func(*args)
File "C:\Users\auppu\Downloads\Py\2.py", line 20, in multiply_num
mul= num1 * num2
TypeError: can't multiply sequence by non-int of type 'str'
Posts: 4,220
Threads: 97
Joined: Sep 2016
I think the point of Larz's comment was to get information on the state of the program right before the error, so that you could tell which value is causing the problem. Although, it would help if you used {!r} in place of {} in his format statement, which would distinguish '5' from 5.
Based on the error, I expect it's num2. I would also note that you are not converting to integer in mulitply_num as you are in calc_sum.
Posts: 8,158
Threads: 160
Joined: Sep 2016
You should learn using Tkinter Variables
http://effbot.org/tkinterbook/variable.htm
In your case you need to link the entry with DoubleVar or if you want to work only with integers - IntVar
Posts: 2
Threads: 0
Joined: Feb 2025
Feb-09-2025, 08:25 AM
(This post was last modified: Feb-09-2025, 08:42 AM by Gribouillis.)
(Dec-20-2018, 07:59 PM)ady1583 Wrote: Hello Everyone, i am stuck at the multiply function using Tkinter, any help is greatly appreciated. Addition seems to be fine.
for the multiplication, I have corrected the mistake you made.
see below the full working code.
from tkinter import *
root=Tk()
def calc_sum(event):
num1 = float(num1Entry.get())
num2 = float(num2Entry.get())
sum = num1 + num2
sumTotalEntry.grid(row=0,column=4)
sumTotalEntry.insert(0,sum)
def multiply_num(event):
num3= float(mul1Entry.get())
num4= float(mul2Entry.get())
mul= (num3) * (num4)
#mulTotalEntry.delete(0,mul)
mulTotalEntry.grid(row=1,column=4)
mulTotalEntry.insert(0,mul)
numm1 = DoubleVar()
numm2 = DoubleVar()
numm3 = DoubleVar()
numm4 = DoubleVar()
num1Entry = Entry(root,textvariable=numm1)
num1Entry.grid(row=0)
plusLabel = Label(root,text="+",font=("Verdana",8))
plusLabel.grid(row=0,column=1)
num2Entry = Entry(root,textvariable=numm2)
num2Entry.grid(row=0,column=2)
equalButton=Button(root,text="=",font=("Verdana",8))
equalButton.bind('<Button-1>',calc_sum)
equalButton.grid(row=0,column=3)
sumTotalEntry=Entry(root)
sumTotalEntry.grid(row=0,column=4)
mul1Entry = Entry(root,textvariable=numm3)
mul1Entry.grid(row=1)
mulLabel = Label(root,text="*",font=("Verdana",8))
mulLabel.grid(row=1,column=1)
mul2Entry = Entry(root,textvariable=numm4)
mul2Entry.grid(row=1,column=2)
equalButton2=Button(root,text="=",font=("Verdana",8))
equalButton2.bind('<Button-1>',multiply_num)
equalButton2.grid(row=1,column=3)
mulTotalEntry=Entry(root)
mulTotalEntry.grid(row=1,column=4)
root.mainloop()
Posts: 2
Threads: 0
Joined: Feb 2025
Feb-09-2025, 02:58 PM
(This post was last modified: Feb-09-2025, 06:37 PM by buran.)
(Dec-20-2018, 07:59 PM)ady1583 Wrote: Hello Everyone, i am stuck at the multiply function using Tkinter, any help is greatly appreciated. Addition seems to be fine.
from tkinter import *
def calc_sum(event):
num1 = int(num1Entry.get())
num2 = int(num2Entry.get())
sum = num1 + num2
sumTotalEntry.delete(0,sum)
sumTotalEntry.insert(0,sum)
def multiply_num(event):
num1= num1Entry.get()
num2= num2Entry.get()
mul= num1 * num2
#mulTotalEntry.delete(0,mul)
mulTotalEntry.insert(0,mul)
root=Tk()
num1Entry = Entry(root)
num1Entry.grid(row=0)
plusLabel = Label(root,text="+",font=("Verdana",8))
plusLabel.grid(row=0,column=1)
num2Entry = Entry(root)
num2Entry.grid(row=0,column=2)
equalButton=Button(root,text="=",font=("Verdana",8))
equalButton.bind('<Button-1>',calc_sum)
equalButton.grid(row=0,column=3)
sumTotalEntry=Entry(root)
sumTotalEntry.grid(row=0,column=4)
mul1Entry = Entry(root)
mul1Entry.grid(row=1)
mulLabel = Label(root,text="*",font=("Verdana",8))
mulLabel.grid(row=1,column=1)
mul2Entry = Entry(root)
mul2Entry.grid(row=1,column=2)
equalButton2=Button(root,text="=",font=("Verdana",8))
equalButton2.bind('<Button-1>',multiply_num)
equalButton2.grid(row=1,column=3)
mulTotalEntry=Entry(root)
mulTotalEntry.grid(row=1,column=4)
root.mainloop() Below is the error i get
Output: Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python35\lib\tkinter\__init__.py", line 1549, in __call__
return self.func(*args)
File "C:/Users/auppu/Downloads/Py/2.py", line 18, in multiply_num
mul= num1 * num2
TypeError: can't multiply sequence by non-int of type 'str'
Hi there, I am also new to this forum, however, I got the correct version of your code.
see below
from tkinter import *
root=Tk()
def calc_sum(event):
num1 = int(num1Entry.get())
num2 = int(num2Entry.get())
sum = num1 + num2
sumTotalEntry.grid(row=0,column=4)
sumTotalEntry.insert(0,sum)
def multiply_num(event):
num3= int(mul1Entry.get())
num4= int(mul2Entry.get())
mul= (num3) * (num4)
#mulTotalEntry.delete(0,mul)
mulTotalEntry.grid(row=1,column=4)
mulTotalEntry.insert(0,mul)
numm1 = IntVar()
numm2 = IntVar()
numm3 = IntVar()
numm4 = IntVar()
num1Entry = Entry(root,textvariable=numm1)
num1Entry.grid(row=0)
plusLabel = Label(root,text="+",font=("Verdana",8))
plusLabel.grid(row=0,column=1)
num2Entry = Entry(root,textvariable=numm2)
num2Entry.grid(row=0,column=2)
equalButton=Button(root,text="=",font=("Verdana",8))
equalButton.bind('<Button-1>',calc_sum)
equalButton.grid(row=0,column=3)
sumTotalEntry=Entry(root)
sumTotalEntry.grid(row=0,column=4)
mul1Entry = Entry(root,textvariable=numm3)
mul1Entry.grid(row=1)
mulLabel = Label(root,text="*",font=("Verdana",8))
mulLabel.grid(row=1,column=1)
mul2Entry = Entry(root,textvariable=numm4)
mul2Entry.grid(row=1,column=2)
equalButton2=Button(root,text="=",font=("Verdana",8))
equalButton2.bind('<Button-1>',multiply_num)
equalButton2.grid(row=1,column=3)
mulTotalEntry=Entry(root)
mulTotalEntry.grid(row=1,column=4)
root.mainloop()
buran write Feb-09-2025, 06:37 PM:Please, use proper tags when post code, traceback, output, etc. This time I have added tags for you.
See BBcode help for more info.
|