2014-02-20 3 views
0

Так что я пытаюсь сделать простую программу калькулятора, используя Tkinter и python. У меня есть общий код для сложения и вычитания, но я получаю эту ошибку. Пожалуйста, сообщите, код указан ниже.Получение traceback и AttributeError: объект 'NoneType' не имеет атрибута 'get'

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__ 
    return self.func(*args) 
    File "C:\Users\**\workspace\calcApp\calcApp\guiCalc.py", line 21, in numClick 
    input = int(entry.get()) 
AttributeError: 'NoneType' object has no attribute 'get' 

guiCalc.py:

from tkinter import * 

class Calc: 
def init(): 

    root = Tk() 
    root.wm_title("Calculator") 

    input = 0 
    varIn = StringVar() 
    varIn = "" 
    labelText = StringVar() 
    ans = "" 
    ans2 = "" 

    entry = Entry(root).grid() 

    def numClick(): 
    input = int(entry.get()) 
    entry.delete(0, END) 


    def equalClick(): 
    if(entry.get()=="+"): 
    ans = input + int(entry.get()) 
    label.configure(text=ans) 
    if(entry.get()=="-"): 
    ans2 = input-int(entry.get()) 
    label.configure(text = ans2) 

    Button(root, text="+", command=numClick).grid()  
    Button(root, text="-", command=numClick).grid() 
    Button(root, text="=", command =equalClick).grid() 

    label = Label(root, text="") 
    label.grid() 
    root.mainloop() 



Calc.init() 
+1

Очень родственный: http://stackoverflow.com/q/11616038/748858 – mgilson

ответ

3
entry = Entry(root).grid() 

entry является None здесь, потому что grid не возвращает ничего. Возможно, вы имели в виду:

entry = Entry(root) 
entry.grid() 
+0

FGITW - Ударьте меня на секунду или два. – mgilson

0

Я как бы новый, да, но позвольте мне поделиться тем, что я узнал.

Приложение .grid() в линейке создания виджета работает безупречно в большинстве случаев для целей макета, но это не очень хорошая практика. Правильная вещь - сделать новую линию, как сказал Кевин.