2017-02-21 5 views
0

Ich bin in der beggining Bühne ein Adressbuch App zu schreiben. Wenn ich die App starte und einen Vor- und Nachnamen eintrage und auf Hinzufügen klicke, erhalte ich eine Fehlermeldung. Es wird nichts zur Datenbank hinzugefügt. HierProbleme mit meinem Tkinter/SQLite Python App

ist die Fehlermeldung:

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. 

Hier ist mein Code:

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,

Gabriel

+0

Hinweis: Sie ein Widget in der Datenbank nicht gespeichert werden können, nur die in einem Widget gespeicherten Wert. Fragen Sie sich, was der Datentyp von Vorname und Nachname ist. –

+0

Ich weiß, was ich effektiv mache, ist ein Widget in der Datenbank zu speichern. Was muss ich tun, um den Vor- und Nachnamen aus dem Widget in der Datenbank zu speichern? Wie würde ich das tun? –

+0

Lesen Sie die Dokumentation zum Widget "Eintrag" und suchen Sie diese Website. Sie stellen Fragen, die oft gestellt wurden und auf vielen Seiten behandelt werden, die dokumentieren, wie man tkinter benutzt. –

Antwort

0

ich denke, das helfen kann: c.execute ('INSERT INTO-Adresse (Nachname, Vorname) VALUES (?,?)', ([Nachname, Vorname]))

+0

Ich habe sqlite, um meine Eingabe zu nehmen. Ich bin jetzt fest, wie man eine Variable von Tkinter in SQLite übergibt. –

+0

Wenn Sie ein Eingabefeld verwenden, können Sie eine Textvariable verwenden. Zum Beispiel my_entry = Eintrag (root, textvariable = first_name). Sie können dann first_name.get() verwenden, um alles abzurufen, was im Eintrag geschrieben wurde. Wenn Sie eine Ressource benötigen, würde ich effbot.org versuchen, alle Eigenschaften der Einträge zu erklären – cjonesrun

+0

Das ist genau das, was ich suchte. Vielen Dank!!! –