Python calculator with tkinter.

import tkinter
from tkinter import *

root = Tk()

numbers = Entry(root, width = 2)
number2 = Entry(root, width = 2)
key_plus = Button(text = "+")
key_minus = Button(text = "-")
key_multiply = Button(text = "*")
key_divon = Button(text = ":")
Claculete = Button(text = "calculte")
output = Label(width = 10)




def plusnumes():

Get_number1 = numbers.get()
Get_number2 = number2.get()
dm =(str(Get_number2))
dm1 =(str(Get_number2))
dm2 = (int(Get_number2))
dm3 =(int(Get_number2))
result = dm2 + dm3
z1 = (str(result))
output['text'] = (z1)




#algoritam
key_plus.bind('<Button-1>',plusnumes)
key_minus.bind('<Button-1>',)
key_multiply.bind('<Button-1>',)
key_divon.bind('<Button-1>',)






#visualzite
numbers.pack(),number2.pack()
Claculete.pack()
output.pack()
key_plus.pack()
key_minus.pack()
key_multiply.pack()
key_divon.pack()
root.mainloop()

The program starts normally but when I try to use the function plusnumes() outputs this error

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)

TypeError: plusnumes() takes 0 positional arguments but 1 was given enter a description of the image here

Author: Koder surocecode, 2018-10-25

1 answers

Callbacks are created to respond to some events. So usually they take 1 argument:

Documentation

def bind(self, sequence, func, add=''):

Func is a Python function, taking one argument, to be invoked when the event occurs. An Event instance will be passed as the argument. (Functions deployed this way are commonly known as callbacks.)


Your callback plusnumes() takes 0 arguments. To fix it it is enough to add 1 argument to plusnumes, even if you do not use this argument - it is still necessary:

def plusnumes(event):
    Get_number1 = numbers.get()
    Get_number2 = number2.get()
    dm =(str(Get_number2))
    dm1 =(str(Get_number2))
    dm2 = (int(Get_number2))
    dm3 =(int(Get_number2))
    result = dm2 + dm3
    z1 = (str(result))
    output['text'] = (z1)
 2
Author: , 2018-10-25 00:56:19