2017-02-21 166 views
0

我正處於編寫地址簿應用程序的初級階段。當我運行應用程序並輸入第一個姓氏並點擊添加時,我收到一條錯誤消息。沒有添加到數據庫的getts。遇到我的Tkinter/Sqlite Python應用程序時遇到問題

以下是錯誤消息:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "/usr/lib/python3.4/tkinter/__init__.py", line 1536, in __call__ 
    return self.func(*args) 
    File "address.py", line 13, in addName 
    (last_name, first_name)) 
sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type. 

這裏是我的代碼:

from tkinter import * 
from tkinter import ttk 
import sqlite3 

conn = sqlite3.connect('address.db') 
c = conn.cursor() 
c.execute('''CREATE TABLE IF NOT EXISTS address (lastName TEXT, firstName TEXT)''') 
conn.commit 

def addName(event): 

    c.execute("INSERT INTO address (lastName, firstName) VALUES (?,?)", 
      (last_name, first_name)) 

    conn.commit() 

root = Tk() 
root.title('Address Book') 
Label(root, text='First Name').grid(row=0, sticky=W, padx=4) 
first_name = Entry(root) 
first_name.grid(row=0, column=1, sticky=E, pady=4) 

Label(root, text='Last Name').grid(row=1, sticky=W, padx=4) 
last_name = Entry(root).grid(row=1, column=1, sticky=E, pady=4) 

getNameButton = Button(root, text='Add') 
getNameButton.bind('<Button-1>', addName) 
getNameButton.grid(row=3, column=1, sticky=E) 

root.mainloop() 

TIA,

加布裏埃爾

+0

提示:您不能在數據庫中存儲小部件,只能存儲在小部件中的值。問自己什麼是first_name和last_name的數據類型。 –

+0

我意識到我實際上在做的是試圖在數據庫中存儲一個小部件。我需要做的是將小部件的名字和姓氏存儲到數據庫中?我會怎麼做? –

+0

閱讀'Entry'小工具的一些文檔,並搜索這個網站。您提出的問題已被多次詢問,並在許多記錄如何使用tkinter的站點中進行了介紹。 –

回答

0

我想這可能幫助: c.execute ('INSERT INTO address(lastname,firstname)VALUES(?,?)',([last_name,first_name]))

+0

我得到了sqlite接受我的輸入。我現在被困在如何將一個變量從Tkinter傳入SQLite中。 –

+0

如果您使用的是輸入框,那麼您可以使用文本變量。例如,my_entry = Entry(root,textvariable = first_name)。然後,您可以使用first_name.get()來檢索條目中寫入的內容。如果您需要資源,我會嘗試effbot.org來解釋條目的所有屬性。 – cjonesrun

+0

這正是我所期待的。謝謝!!! –

相關問題