在tkinter,Python 3.8.2中,“ TypeError:'NoneType'对象不可调用”

时间:2020-03-20 18:21:37

标签: python python-3.x function tkinter tkinter-entry

我正在使用tkinter在Python3上制作一个小型计算器。在一节中,我遇到了
TypeError: 'NoneType' object is not callable
这是我调用该函数的部分:

def key_in(event):

    if (event.keysym == 'Return'):
        calculate()

    elif (event.keysym == 'BackSpace'):
        delete()  # or clear()

    # elif and else statements

我在calculate中没有遇到任何错误,但是在TypeErrordelete中得到了这个clear

# ERROR (TypeError)
def delete():
    """Responsive function to delete the last entered character"""
    global _expression, _equation    # _expression = '<expression>', _equation = tkinter.StringVar()

    try:
        if (_expression[-1] != ' '):
            _expression = _expression[0:-1:1]

        else:
            _expression = _expression[0:-3:1]

    except IndexError:
        pass

    _equation.set(_expression)
# ERROR (TypeError)
def clear():
    """Function to clear the whole *_expression*"""
    global _expression, _equation
    _expression = ''
    _equation.set(_expression)
# NO ERROR
def calculate():
    """Enters the calculated value of the expression
to the text box while handling errors
"""
    global _expression, _equation

    try:
        try:
            # Function `evaluate` will convert and calculate the `_expression` into a python
            # understandable code and function `str` will convert the result into string
            _expression = str(evaluate(_expression))
            _equation.set(_expression)

        except ZeroDivisionError:
            _equation.set('∞')
            _expression = ""

    except:
        _equation.set("ERROR")
        _expression = ""

我该如何解决?

实际错误:

Exception in Tkinter callback
Traceback (most recent call last):
    File "C:\Users\SpiderMan\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
        return self.func(*args)
    File "G:\Python Programs\Calculator.py", line 489, in key_in
        delete()
TypeError: 'NoneType' object is not callable

0 个答案:

没有答案