wie man in der Betreffzeile erkennen kann geht es um diesen Syntax.
(Zeile 318-327)
Ich hänge schon eine weile an dieser Sache und komm einfach nicht weiter.
Vielleicht hat einer von euch ein Idee oder kann mir an einem Beispiel zeigen was ich falsch mache.
Des Weiteren ist mein Code nicht der beste, später werde ich das ganze in OO umsetzen.
Code: Alles auswählen
import tkinter
import tkinter.ttk
import tkinter.messagebox
import psycopg2
from tkinter import *
from tkinter.ttk import *
root = Tk()
root.title('WBS') # title for top-level window
master = Frame(root, name='master') # create Frame in "root"
master.pack(fill=BOTH) # fill both sides of the parent
# quit if the window is deleted
root.protocol("WM_DELETE_WINDOW", master.quit)
nb = Notebook(master, name='nb', width=1200, height=450) # create Notebook in "master"
nb.grid(row=6, column=2) # fill "master" but pad sides
slave = Frame(root, name='slave') # create Frame in "root"
slave.pack(fill=BOTH) # fill both sides of the parent
nbs = Notebook(slave, name='nbs', width=1200, height=400) # create Notebook in "master"
nbs.grid(row=6, column=2) # fill "master" but pad sides
#Tab Master hinzufügen
tab_kunde_neu = Frame(nb, name='tab-kunde-neu')
nb.add(tab_kunde_neu, text="Kunde (neu)")
tab_kunde = Frame(master, name='tab-kunde')
nb.add(tab_kunde, text="Kunde")
tab_vermittler_neu = Frame(nb, name='tab-vermittler-neu')
nb.add(tab_vermittler_neu, text="Vermittler (neu)")
tab_vermittler = Frame(nb, name='tab-vermittler')
nb.add(tab_vermittler, text="Vermittler")
#Tab Slave hinzufügen
tab_uebersicht = Frame(nbs, name="tab-uebersicht")
nbs.add(tab_uebersicht, text="Vertragsübersicht")
tab_vertrag = Frame(nbs, name="tab-vertrag")
nbs.add(tab_vertrag, text="Vertrag (neu)")
def abbruch():
titel.delete(0, END)
name.delete(0, END)
vorname.delete(0, END)
anrede.delete(0, END)
geburtstag.delete(0, END)
staat.delete(0, END)
steuer.delete(0, END)
finanzamt.delete(0, END)
strasse.delete(0, END)
hausnr.delete(0, END)
plz.delete(0, END)
ort.delete(0, END)
telefon.delete(0, END)
telefax.delete(0, END)
def save():
connection = psycopg2.connect("dbname=sqltest")
connection.commit()
cursor = connection.cursor()
#Tabelle erzeugen
sql = "CREATE TABLE IF NOT EXISTS vertrag(" \
"vertragsnummer TEXT, " \
"letzte_aenderung TEXT, " \
"datum TEXT, " \
"ort TEXT, " \
"pruefer TEXT, " \
"vertragsart TEXT, " \
"betrag TEXT, " \
"gebuehr TEXT, " \
"produktname TEXT, " \
"zinssatz TEXT, " \
"konto TEXT, " \
"start TEXT, " \
"laufzeit TEXT, " \
"kuendigung TEXT, " \
"bearbeiter TEXT, " \
"vermittler TEXT)"
cursor.execute(sql)
connection.commit()
sql = "INSERT INTO vertrag VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s', '%s', '%s')" % \
(ausvertrag.get(), auschange.get(), datum.get(),
orts.get(), pruefer.get(), vertragsart.get(),
betrag.get(), gebuehr.get(), produktname.get(),
zinssatz.get(), konto.get(), start.get(),
laufzeit.get(), kuendigung.get(), bearbeiter.get(),
vermittler.get())
if ausvertrag.get() =="" or \
auschange.get() =="" or \
datum.get() =="" or \
orts.get() =="" or \
pruefer.get() =="" or \
vertragsart.get() =="" or \
betrag.get() =="" or \
gebuehr.get() =="" or \
produktname.get() =="" or \
zinssatz.get() =="" or \
konto.get() =="" or \
start.get() =="" or \
laufzeit.get() =="" or \
kuendigung.get() =="" or \
bearbeiter.get() =="" or \
vermittler.get() =="":
return tkinter.messagebox.showwarning('ERROR', 'Daten wurden nicht Vollständig angegeben')
else:
cursor.execute(sql)
connection.commit()
connection.close()
#Inhalt der Eingabefelder nach dem senden leeren
ausvertrag.delete(0, END)
auschange.delete(0, END)
datum.delete(0, END)
orts.delete(0, END)
pruefer.delete(0, END)
vertragsart.delete(0, END)
betrag.delete(0, END)
gebuehr.delete(0, END)
produktname.delete(0, END)
zinssatz.delete(0, END)
konto.delete(0, END)
start.delete(0, END)
laufzeit.delete(0, END)
kuendigung.delete(0, END)
bearbeiter.delete(0, END)
vermittler.delete(0, END)
def senden():
connection = psycopg2.connect("dbname=sqltest")
connection.commit()
cursor = connection.cursor()
#Tabelle erzeugen
sql = "CREATE TABLE IF NOT EXISTS personen(" \
"titel TEXT, " \
"name TEXT, " \
"vorname TEXT, " \
"anrede TEXT, " \
"geburtstag TEXT, " \
"staat TEXT, " \
"steuerident TEXT, " \
"finanzamt TEXT, " \
"strasse TEXT, " \
"hausnummer TEXT, " \
"ort TEXT, " \
"plz TEXT, " \
"telefon TEXT, " \
"telefax TEXT)"
cursor.execute(sql)
connection.commit()
sql = "INSERT INTO personen VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % \
(titel.get(), name.get(), vorname.get(),
anrede.get(), geburtstag.get(), staat.get(),
steuer.get(), finanzamt.get(), strasse.get(),
hausnr.get(), plz.get(), ort.get(),
telefon.get(), telefax.get())
if titel.get() =="" or \
name.get() =="" or \
vorname.get() =="" or \
anrede.get() =="" or \
geburtstag.get() =="" or \
staat.get() =="" or \
steuer.get() =="" or \
finanzamt.get() =="" or \
strasse.get() =="" or \
hausnr.get() =="" or \
plz.get() =="" or \
ort.get() =="" or \
telefon.get() =="" or \
telefax.get() =="":
return tkinter.messagebox.showwarning('ERROR', 'Daten wurden nicht Vollständig angegeben')
else:
cursor.execute(sql)
connection.commit()
connection.close()
#Inhalt der Eingabefelder nach dem senden leeren
titel.delete(0, END)
name.delete(0, END)
vorname.delete(0, END)
anrede.delete(0, END)
geburtstag.delete(0, END)
staat.delete(0, END)
steuer.delete(0, END)
finanzamt.delete(0, END)
strasse.delete(0, END)
hausnr.delete(0, END)
plz.delete(0, END)
ort.delete(0, END)
telefon.delete(0, END)
telefax.delete(0, END)
#Beschriftung
Label(tab_kunde_neu, text="Titel", font="Helvetica 13 bold").grid(row=1, column=0)
Label(tab_kunde_neu, text="Name", font="Helvetica 13 bold").grid(row=1, column=2)
Label(tab_kunde_neu, text="Vorname", font="Helvetica 13 bold").grid(row=1, column=4)
Label(tab_kunde_neu, text="Anrede", font="Helvetica 13 bold").grid(row=3, column=0)
Label(tab_kunde_neu, text="Geburtstag", font="Helvetica 13 bold").grid(row=3, column=2)
Label(tab_kunde_neu, text="Staatsangehörigkeit", font="Helvetica 13 bold").grid(row=3, column=4)
Label(tab_kunde_neu, text="Steueridentifikationsnummer", font="Helvetica 13 bold").grid(row=5, column=0)
Label(tab_kunde_neu, text="Finanzamt", font="Helvetica 13 bold").grid(row=5, column=2)
Label(tab_kunde_neu, text="Strasse", font="Helvetica 13 bold").grid(row=7, column=0)
Label(tab_kunde_neu, text="Hausnummer", font="Helvetica 13 bold").grid(row=7, column=2)
Label(tab_kunde_neu, text="Postleitzahl", font="Helvetica 13 bold").grid(row=9, column=0)
Label(tab_kunde_neu, text="Ort", font="Helvetica 13 bold").grid(row=9, column=2)
Label(tab_kunde_neu, text="Telefon", font="Helvetica 13 bold").grid(row=11, column=0)
Label(tab_kunde_neu, text="Telefax", font="Helvetica 13 bold").grid(row=11, column=2)
#Eingabefelder
titel = Entry(tab_kunde_neu, font=10)
titel.grid(row=0, column=0)
name = Entry(tab_kunde_neu, font=10)
name.grid(row=0, column=2)
vorname = Entry(tab_kunde_neu, font=10)
vorname.grid(row=0, column=4)
anrede = Entry(tab_kunde_neu, font=10)
anrede.grid(row=2, column=0)
geburtstag = Entry(tab_kunde_neu, font=10)
geburtstag.grid(row=2, column=2)
staat = Entry(tab_kunde_neu, font=10)
staat.grid(row=2, column=4)
steuer = Entry(tab_kunde_neu, font=10)
steuer.grid(row=4, column=0)
finanzamt = Entry(tab_kunde_neu, font=10)
finanzamt.grid(row=4, column=2)
strasse = Entry(tab_kunde_neu, font=10)
strasse.grid(row=6, column=0)
hausnr = Entry(tab_kunde_neu, font=10)
hausnr.grid(row=6, column=2)
plz = Entry(tab_kunde_neu, font=10)
plz.grid(row=8, column=0)
ort = Entry(tab_kunde_neu, font=10)
ort.grid(row=8, column=2)
telefon = Entry(tab_kunde_neu, font=10)
telefon.grid(row=10, column=0)
telefax = Entry(tab_kunde_neu, font=10)
telefax.grid(row=10, column=2)
Button(tab_kunde_neu, text='Schließen', command=master.quit).grid(row=5, column=5, sticky=NSEW, pady=4)
Button(tab_kunde_neu, text='Speichern', command=senden).grid(row=6, column=5, sticky=NSEW, pady=4)
Button(tab_kunde_neu, text='Abbruch', command=abbruch).grid(row=7, column=5, sticky=NSEW, pady=4)
#----------------------------------------------------------------------------------------------------------------------#
Label(tab_kunde, text="Steueridentnr suchen", font="Helvetica 13 bold").grid(row=0, column=0)
suche = Entry(tab_kunde, font=10)
suche.grid(row=0, column=1)
def suchen():
connection = psycopg2.connect("dbname=sqltest")
cursor = connection.cursor()
cursor.execute('SELECT * FROM personen WHERE steuerident = %s ', suche.get())
ausgabetitel.delete (0, END)
ausgabename.delete (0, END)
ausgabevorname.delete (0, END)
ausgabeanrede.delete (0, END)
ausgabegeburtstag.delete (0, END)
ausgabestaat.delete (0, END)
ausgabesteuer.delete (0, END)
ausgabefinanzamt.delete (0, END)
ausgabestrasse.delete (0, END)
ausgabehausnr.delete (0, END)
ausgabeort.delete (0, END)
ausgabeplz.delete (0, END)
ausgabetelefon.delete (0, END)
ausgabetelefax.delete (0, END)
for dsatz in (cursor):
titel = dsatz[0]
name = dsatz[1]
vorname = dsatz[2]
anrede = dsatz[3]
geburtstag = dsatz[4]
staat = dsatz[5]
steuer = dsatz[6]
finanzamt = dsatz[7]
strasse = dsatz[8]
hausnr = dsatz[9]
ort = dsatz[10]
plz = dsatz[11]
telefon = dsatz[12]
telefax = dsatz[13]
ausgabetitel.insert ("end", titel)
ausgabename.insert ("end", name)
ausgabevorname.insert ("end", vorname)
ausgabeanrede.insert ("end", anrede)
ausgabegeburtstag.insert ("end", geburtstag)
ausgabestaat.insert ("end", staat)
ausgabesteuer.insert ("end", steuer)
ausgabefinanzamt.insert ("end", finanzamt)
ausgabestrasse.insert ("end", strasse)
ausgabehausnr.insert ("end", hausnr)
ausgabeort.insert ("end", ort)
ausgabeplz.insert ("end", plz)
ausgabetelefon.insert ("end", telefon)
ausgabetelefax.insert ("end", telefax)
def update():
connection = psycopg2.connect("dbname=sqltest")
connection.commit()
cursor = connection.cursor()
sql=("UPDATE personen SET titel =",titel.get(), " WHERE steuerident=",suche)
cursor.execute(sql)
connection.commit()
connection.close()
Button(tab_kunde, text='Suchen', command=suchen).grid(row=0, column=2, sticky=W, pady=20)
Button(tab_kunde, text='Ändern', command=update).grid(row=8, column=2, sticky=W)
#Beschriftung
Label(tab_kunde, text="Titel", font="Helvetica 13 bold").grid(row=4, column=0, pady=5, padx=5)
Label(tab_kunde, text="Name", font="Helvetica 13 bold").grid(row=4, column=1, pady=5, padx=5)
Label(tab_kunde, text="Vorname", font="Helvetica 13 bold").grid(row=4, column=2, pady=5, padx=5)
Label(tab_kunde, text="Anrede", font="Helvetica 13 bold").grid(row=6, column=0, pady=5, padx=5)
Label(tab_kunde, text="Geburtstag", font="Helvetica 13 bold").grid(row=6, column=1, pady=5, padx=5)
Label(tab_kunde, text="Staatsangehörigkeit", font="Helvetica 13 bold").grid(row=6, column=2, pady=5, padx=5)
Label(tab_kunde, text="Steueridentifikationsnr", font="Helvetica 13 bold").grid(row=8, column=0, pady=5, padx=5)
Label(tab_kunde, text="Finanzamt", font="Helvetica 13 bold").grid(row=8, column=1, pady=5, padx=5)
Label(tab_kunde, text="Strasse", font="Helvetica 13 bold").grid(row=10, column=0, pady=5, padx=5)
Label(tab_kunde, text="Hausnummer", font="Helvetica 13 bold").grid(row=10, column=1, pady=5, padx=5)
Label(tab_kunde, text="Postleitzahl", font="Helvetica 13 bold").grid(row=12, column=0, pady=5, padx=5)
Label(tab_kunde, text="Ort", font="Helvetica 13 bold").grid(row=12, column=1, pady=5, padx=5)
Label(tab_kunde, text="Telefon", font="Helvetica 13 bold").grid(row=14, column=0, pady=5, padx=5)
Label(tab_kunde, text="Telefax", font="Helvetica 13 bold").grid(row=14, column=1, pady=5, padx=5)
#Eingabefelder
ausgabetitel = Entry(tab_kunde, font=10)
ausgabetitel.grid(row=3, column=0, padx=5)
ausgabename = Entry(tab_kunde, font=10)
ausgabename.grid(row=3, column=1, padx=5)
ausgabevorname = Entry(tab_kunde, font=10)
ausgabevorname.grid(row=3, column=2, padx=5)
ausgabeanrede = Entry(tab_kunde, font=10)
ausgabeanrede.grid(row=5, column=0, padx=5)
ausgabegeburtstag = Entry(tab_kunde, font=10)
ausgabegeburtstag.grid(row=5, column=1, padx=5)
ausgabestaat = Entry(tab_kunde, font=10)
ausgabestaat.grid(row=5, column=2, padx=5)
ausgabesteuer = Entry(tab_kunde, font=10)
ausgabesteuer.grid(row=7, column=0, padx=5)
ausgabefinanzamt = Entry(tab_kunde, font=10)
ausgabefinanzamt.grid(row=7, column=1, padx=5)
ausgabestrasse = Entry(tab_kunde, font=10)
ausgabestrasse.grid(row=9, column=0, padx=5)
ausgabehausnr = Entry(tab_kunde, font=10)
ausgabehausnr.grid(row=9, column=1, padx=5)
ausgabeplz = Entry(tab_kunde, font=10)
ausgabeplz.grid(row=11, column=0, padx=5)
ausgabeort = Entry(tab_kunde, font=10)
ausgabeort.grid(row=11, column=1, padx=5)
ausgabetelefon = Entry(tab_kunde, font=10)
ausgabetelefon.grid(row=13, column=0, padx=5)
ausgabetelefax = Entry(tab_kunde, font=10)
ausgabetelefax.grid(row=13, column=1, padx=5)
#----------------------------------------------------------------------------------------------------------------------#
#Beschriftung
Label(tab_vertrag, text="Vertragsnummer", font="Helvetica 13 bold").grid(row=4, column=0, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="letzte Änderung", font="Helvetica 13 bold").grid(row=4, column=1, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Datum", font="Helvetica 13 bold").grid(row=6, column=0, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Ort", font="Helvetica 13 bold").grid(row=6, column=1, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Prüfer", font="Helvetica 13 bold").grid(row=6, column=2, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Vertragsart", font="Helvetica 13 bold").grid(row=8, column=0, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Betrag", font="Helvetica 13 bold").grid(row=8, column=1, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Gebühr", font="Helvetica 13 bold").grid(row=8, column=2, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Produktname", font="Helvetica 13 bold").grid(row=10, column=0, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Zinssatz", font="Helvetica 13 bold").grid(row=10, column=1, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="konto", font="Helvetica 13 bold").grid(row=10, column=2, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Start", font="Helvetica 13 bold").grid(row=12, column=0, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Laufzeit", font="Helvetica 13 bold").grid(row=12, column=1, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Kündigung", font="Helvetica 13 bold").grid(row=12, column=2, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Bearbeiter", font="Helvetica 13 bold").grid(row=14, column=0, pady=5, padx=5, sticky=W)
Label(tab_vertrag, text="Vermittler", font="Helvetica 13 bold").grid(row=14, column=1, pady=5, padx=5, sticky=W)
#Felder
ausvertrag = Entry(tab_vertrag, font=10)
ausvertrag.grid(row=3, column=0, padx=5)
auschange = Entry(tab_vertrag, font=10)
auschange.grid(row=3, column=1, padx=5)
datum = Entry(tab_vertrag, font=10)
datum.grid(row=5, column=0, padx=5)
orts = Entry(tab_vertrag, font=10)
orts.grid(row=5, column=1, padx=5)
pruefer = Entry(tab_vertrag, font=10)
pruefer.grid(row=5, column=2, padx=5)
vertragsart = Entry(tab_vertrag, font=10)
vertragsart.grid(row=7, column=0, padx=5)
betrag = Entry(tab_vertrag, font=10)
betrag.grid(row=7, column=1, padx=5)
gebuehr = Entry(tab_vertrag, font=10)
gebuehr.grid(row=7, column=2, padx=5)
produktname = Entry(tab_vertrag, font=10)
produktname.grid(row=9, column=0, padx=5)
zinssatz = Entry(tab_vertrag, font=10)
zinssatz.grid(row=9, column=1, padx=5)
konto = Entry(tab_vertrag, font=10)
konto.grid(row=9, column=2, padx=5)
start = Entry(tab_vertrag, font=10)
start.grid(row=11, column=0, padx=5)
laufzeit = Entry(tab_vertrag, font=10)
laufzeit.grid(row=11, column=1, padx=5)
kuendigung = Entry(tab_vertrag, font=10)
kuendigung.grid(row=11, column=2, padx=5)
bearbeiter = Entry(tab_vertrag, font=10)
bearbeiter.grid(row=13, column=0, padx=5)
vermittler = Entry(tab_vertrag, font=10)
vermittler.grid(row=13, column=1, padx=5)
Button(tab_vertrag, text='Speichern', command=save).grid(row=14, columnspan=3, sticky=E)
#----------------------------------------------------------------------------------------------------------------------#
#Vertragsübersicht Tabelle
top = ["Vertragsnummer","Vertragsart","Betrag","Kündigung"]
for i in range(5):
for j in range(4):
l = Label(tab_uebersicht, text='%d.%d' % (i, j), relief=RIDGE)
l.grid(row=i, column=j, sticky=NSEW, padx=5, pady=5)
if __name__ == "__main__":
master.mainloop() # call master's Frame.mainloop() method.
root.destroy() # if mainloop quits, destroy window
Code: Alles auswählen
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib64/python3.2/tkinter/__init__.py", line 1399, in __call__
return self.func(*args)
File "Pfad", line 324, in update
cursor.execute(sql)
TypeError: argument 1 must be a string or unicode object

Grüße
Kalli
Ps. Es handelt sich um psycopg2