2014-04-04 237 views
1

我試圖刪除一個記錄,當插入ID或用戶將輸入框的名稱輸入到輸入框中時。但是它不會讓我獲得的輸入框信息,由於以下錯誤:Python中的Entry.get()錯誤Tkinter

"Traceback (most recent call last): 
    File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__ 
    return self.func(*args) 
    File "H:\A-Level Computing\PROJECT!\Final Code.py", line 368, in delete_recipe 
    Retrieve1 = EntryBox1.get() 
AttributeError: 'NoneType' object has no attribute 'get'" 

的代碼如下:

def delete_recipe(): 

    global EntryBox1, EntryBox2, new_db 

    Retrieve1 = EntryBox1.get() 
    Retrieve2 = EntryBox2.get() 

    new_db = sqlite3.connect('H:\A-Level Computing\PROJECT!\Recipes.db') 

    new_db.execute("DELETE from RecipesDetails WHERE Retrieve1 = Rec_ID and Retrieve2 = Name") 

    new_db.commit() 
    new_db.close() 

我會任何幫助非常感激;.謝謝!

+0

簡單:'EntryBox1'是'None'。你在哪裏創建/設置它? –

+1

一旦你修復了EntryBox1,你可能想要添加'r'來創建一個原始字符串來正確渲染反斜槓:'new_db = sqlite3.connect(r'H:\ A-Level Computing \ PROJECT!\ Recipes。 db')' – pts

+0

我的猜測是你有一些幫助函數來創建所有這些輸入框,並且這個函數不會返回任何東西... –

回答

1

確保你沒有行類似如下:

entry = Entry().pack() # entry is None 

packgridplace不會返回Noneentry變成None

你應該分開Entry creatation和來電pack/grid/place方法:

entry = Entry() 
entry.pack()