2017-02-21 132 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

这正是我所期待的。谢谢!!! –

相关问题