Gleich zu beginn hab ich eine Frage bezüglich dem Dekonstruktor.
Ich möchte eine Funktion "zerstören" welches ein Layout beinhaltet.
Konkret handelt es sich dabei um das Login-Layout welches nach erfolgreichem Login
weiterhin angezeigt wird.
Code: Alles auswählen
__author__ = 'Kalli87'
from gi.repository import Gtk
from gi.repository import Pango
import tkinter
import tkinter.ttk
import tkinter.messagebox
import psycopg2
from tkinter import *
from tkinter.ttk import *
import os
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.grid()
self.datenbank()
self.layout_login()
def __del__(self):
del self.layout_login
print("Irgendwas")
def datenbank(self):
connection = psycopg2.connect("dbname=sqltest")
self.cursor = connection.cursor()
def layout_login(self):
Button(text = "Login", command = self.login).grid(row=5, column=0, sticky=NSEW, pady=4)
Button(text = 'Schließen', command = self.master.quit).grid(row=5, column=1, sticky=NSEW, pady=4)
Label(text = "Username", font="Helvetica 13 bold").grid(row=4, column=0, pady=5, padx=5)
Label(text = "Passwort", font="Helvetica 13 bold").grid(row=4, column=1, pady=5, padx=5)
self.benutzername = Entry(font=10)
self.benutzername.grid(row=3, column=0, padx=5, pady=5)
self.passwort = Entry(font=10, show="******")
self.passwort.grid(row=3, column=1, padx=5, pady=5)
def layout_tabs(self):
nb = Notebook(self.master, name='nb', width=800, height=400) # create Notebook in "master"
nb.grid(row=6, column=2) # fill "master" but pad sides
self.tab_kunde_neu = Frame(nb, name='tab-kunde-neu')
nb.add(self.tab_kunde_neu, text="Kunde (neu)")
self.tab_kunde = Frame(nb, name='tab-kunde')
nb.add(self.tab_kunde, text="Kunde")
self.tab_vermittler_neu = Frame(nb, name='tab-vermittler-neu')
nb.add(self.tab_vermittler_neu, text="Vermittler (neu)")
self.tab_vermittler = Frame(nb, name='tab-vermittler')
nb.add(self.tab_vermittler, text="Vermittler")
self.tab_test = Frame(nb, name="test_teb")
nb.add(self.tab_test, text="tab_test")
def kunde_neu(self):
Label(self.tab_kunde_neu, text="Titel", font="Helvetica 13 bold").grid(row=1, column=0)
Label(self.tab_kunde_neu, text="Name", font="Helvetica 13 bold").grid(row=1, column=2)
Label(self.tab_kunde_neu, text="Vorname", font="Helvetica 13 bold").grid(row=1, column=4)
Label(self.tab_kunde_neu, text="Anrede", font="Helvetica 13 bold").grid(row=3, column=0)
Label(self.tab_kunde_neu, text="Geburtstag", font="Helvetica 13 bold").grid(row=3, column=2)
Label(self.tab_kunde_neu, text="Staatsangehörigkeit", font="Helvetica 13 bold").grid(row=3, column=4)
Label(self.tab_kunde_neu, text="Steueridentifikationsnummer", font="Helvetica 13 bold").grid(row=5, column=0)
Label(self.tab_kunde_neu, text="Finanzamt", font="Helvetica 13 bold").grid(row=5, column=2)
Label(self.tab_kunde_neu, text="Strasse", font="Helvetica 13 bold").grid(row=7, column=0)
Label(self.tab_kunde_neu, text="Hausnummer", font="Helvetica 13 bold").grid(row=7, column=2)
Label(self.tab_kunde_neu, text="Postleitzahl", font="Helvetica 13 bold").grid(row=9, column=0)
Label(self.tab_kunde_neu, text="Ort", font="Helvetica 13 bold").grid(row=9, column=2)
Label(self.tab_kunde_neu, text="Telefon", font="Helvetica 13 bold").grid(row=11, column=0)
Label(self.tab_kunde_neu, text="Telefax", font="Helvetica 13 bold").grid(row=11, column=2)
self.titel = Entry(self.tab_kunde_neu, font=10)
self.titel.grid(row=0, column=0)
self.name = Entry(self.tab_kunde_neu, font=10)
self.name.grid(row=0, column=2)
self.vorname = Entry(self.tab_kunde_neu, font=10)
self.vorname.grid(row=0, column=4)
self.anrede = Entry(self.tab_kunde_neu, font=10)
self.anrede.grid(row=2, column=0)
self.geburtstag = Entry(self.tab_kunde_neu, font=10)
self.geburtstag.grid(row=2, column=2)
sql=("SELECT * FROM staatsangehoerigkeit")
self.cursor.execute(sql)
staat = StringVar(self.tab_kunde_neu)
staat.set("Staatsangehörigkeit")
laender=[]
for dsatz in (self.cursor):
staatsangehoerigkeit = dsatz[0]
laender.append(staatsangehoerigkeit)
dropdown = OptionMenu(self.tab_kunde_neu, staat, staat.get(), *laender )
dropdown.grid(row=2, column=4, sticky=NSEW)
self.steuer = Entry(self.tab_kunde_neu, font=10)
self.steuer.grid(row=4, column=0)
self.finanzamt = Entry(self.tab_kunde_neu, font=10)
self.finanzamt.grid(row=4, column=2)
self.strasse = Entry(self.tab_kunde_neu, font=10)
self.strasse.grid(row=6, column=0)
self.hausnr = Entry(self.tab_kunde_neu, font=10)
self.hausnr.grid(row=6, column=2)
self.plz = Entry(self.tab_kunde_neu, font=10)
self.plz.grid(row=8, column=0)
self.ort = Entry(self.tab_kunde_neu, font=10)
self.ort.grid(row=8, column=2)
self.telefon = Entry(self.tab_kunde_neu, font=10)
self.telefon.grid(row=10, column=0)
self.telefax = Entry(self.tab_kunde_neu, font=10)
self.telefax.grid(row=10, column=2)
Button(self.tab_kunde_neu, text='Schließen', command=self.master.quit).grid(row=5, column=5, sticky=NSEW, pady=4)
Button(self.tab_kunde_neu, text='Speichern', ).grid(row=6, column=5, sticky=NSEW, pady=4)
Button(self.tab_kunde_neu, text='Abbruch', command=self.abbruch).grid(row=7, column=5, sticky=NSEW, pady=4)
def kunde(self):
Label(self.tab_kunde, text="Steueridentnr suchen", font="Helvetica 13 bold").grid(row=0, column=0)
suche = Entry(self.tab_kunde, font=10)
suche.grid(row=0, column=1)
def suchen():
suchfu=[]
suchfu.append(suche.get())
connection = psycopg2.connect("dbname=sqltest")
cursor = connection.cursor()
cursor.execute('SELECT * FROM personen WHERE steuerident = %s ', suchfu)
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():
self.cursor.execute("UPDATE personen SET "
"titel= %s, "
"name= %s, "
"vorname= %s, "
"anrede= %s, "
"geburtstag= %s, "
"staat= %s, "
"steuerident=%s, "
"finanzamt= %s, "
"strasse= %s, "
"hausnummer= %s, "
"ort= %s, "
"plz= %s, "
"telefon= %s, "
"telefax= %s"
"WHERE steuerident=%s",
(ausgabetitel.get(),
ausgabename.get(),
ausgabevorname.get(),
ausgabeanrede.get(),
ausgabegeburtstag.get(),
ausgabestaat.get(),
ausgabesteuer.get(),
ausgabefinanzamt.get(),
ausgabestrasse.get(),
ausgabehausnr.get(),
ausgabeort.get(),
ausgabeplz.get(),
ausgabetelefon.get(),
ausgabetelefax.get(),
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)
Button(self.tab_kunde, text='Suchen', command=suchen).grid(row=0, column=2, sticky=W, pady=20)
Button(self.tab_kunde, text='Ändern', command=update).grid(row=8, column=2, sticky=W)
#Beschriftung
Label(self.tab_kunde, text="Titel", font="Helvetica 13 bold").grid(row=4, column=0, pady=5, padx=5)
Label(self.tab_kunde, text="Name", font="Helvetica 13 bold").grid(row=4, column=1, pady=5, padx=5)
Label(self.tab_kunde, text="Vorname", font="Helvetica 13 bold").grid(row=4, column=2, pady=5, padx=5)
Label(self.tab_kunde, text="Anrede", font="Helvetica 13 bold").grid(row=6, column=0, pady=5, padx=5)
Label(self.tab_kunde, text="Geburtstag", font="Helvetica 13 bold").grid(row=6, column=1, pady=5, padx=5)
Label(self.tab_kunde, text="Staatsangehörigkeit", font="Helvetica 13 bold").grid(row=6, column=2, pady=5, padx=5)
Label(self.tab_kunde, text="Steueridentifikationsnr", font="Helvetica 13 bold").grid(row=8, column=0, pady=5, padx=5)
Label(self.tab_kunde, text="Finanzamt", font="Helvetica 13 bold").grid(row=8, column=1, pady=5, padx=5)
Label(self.tab_kunde, text="Strasse", font="Helvetica 13 bold").grid(row=10, column=0, pady=5, padx=5)
Label(self.tab_kunde, text="Hausnummer", font="Helvetica 13 bold").grid(row=10, column=1, pady=5, padx=5)
Label(self.tab_kunde, text="Postleitzahl", font="Helvetica 13 bold").grid(row=12, column=0, pady=5, padx=5)
Label(self.tab_kunde, text="Ort", font="Helvetica 13 bold").grid(row=12, column=1, pady=5, padx=5)
Label(self.tab_kunde, text="Telefon", font="Helvetica 13 bold").grid(row=14, column=0, pady=5, padx=5)
Label(self.tab_kunde, text="Telefax", font="Helvetica 13 bold").grid(row=14, column=1, pady=5, padx=5)
#Eingabefelder
ausgabetitel = Entry(self.tab_kunde, font=10)
ausgabetitel.grid(row=3, column=0, padx=5)
ausgabename = Entry(self.tab_kunde, font=10)
ausgabename.grid(row=3, column=1, padx=5)
ausgabevorname = Entry(self.tab_kunde, font=10)
ausgabevorname.grid(row=3, column=2, padx=5)
ausgabeanrede = Entry(self.tab_kunde, font=10)
ausgabeanrede.grid(row=5, column=0, padx=5)
ausgabegeburtstag = Entry(self.tab_kunde, font=10)
ausgabegeburtstag.grid(row=5, column=1, padx=5)
ausgabestaat = Entry(self.tab_kunde, font=10)
ausgabestaat.grid(row=5, column=2, padx=5)
ausgabesteuer = Entry(self.tab_kunde, font=10)
ausgabesteuer.grid(row=7, column=0, padx=5)
ausgabefinanzamt = Entry(self.tab_kunde, font=10)
ausgabefinanzamt.grid(row=7, column=1, padx=5)
ausgabestrasse = Entry(self.tab_kunde, font=10)
ausgabestrasse.grid(row=9, column=0, padx=5)
ausgabehausnr = Entry(self.tab_kunde, font=10)
ausgabehausnr.grid(row=9, column=1, padx=5)
ausgabeplz = Entry(self.tab_kunde, font=10)
ausgabeplz.grid(row=11, column=0, padx=5)
ausgabeort = Entry(self.tab_kunde, font=10)
ausgabeort.grid(row=11, column=1, padx=5)
ausgabetelefon = Entry(self.tab_kunde, font=10)
ausgabetelefon.grid(row=13, column=0, padx=5)
ausgabetelefax = Entry(self.tab_kunde, font=10)
ausgabetelefax.grid(row=13, column=1, padx=5)
def vermittler_neu(self):
Label(self.tab_vermittler_neu, text="Titel", font="Helvetica 13 bold").grid(row=1, column=0)
Label(self.tab_vermittler_neu, text="Name", font="Helvetica 13 bold").grid(row=1, column=2)
Label(self.tab_vermittler_neu, text="Vorname", font="Helvetica 13 bold").grid(row=1, column=4)
Label(self.tab_vermittler_neu, text="Anrede", font="Helvetica 13 bold").grid(row=3, column=0)
Label(self.tab_vermittler_neu, text="Geburtstag", font="Helvetica 13 bold").grid(row=3, column=2)
Label(self.tab_vermittler_neu, text="Staatsangehörigkeit", font="Helvetica 13 bold").grid(row=3, column=4)
Label(self.tab_vermittler_neu, text="Steueridentifikationsnummer", font="Helvetica 13 bold").grid(row=5, column=0)
Label(self.tab_vermittler_neu, text="Finanzamt", font="Helvetica 13 bold").grid(row=5, column=2)
Label(self.tab_vermittler_neu, text="Strasse", font="Helvetica 13 bold").grid(row=7, column=0)
Label(self.tab_vermittler_neu, text="Hausnummer", font="Helvetica 13 bold").grid(row=7, column=2)
Label(self.tab_vermittler_neu, text="Postleitzahl", font="Helvetica 13 bold").grid(row=9, column=0)
Label(self.tab_vermittler_neu, text="Ort", font="Helvetica 13 bold").grid(row=9, column=2)
Label(self.tab_vermittler_neu, text="Telefon", font="Helvetica 13 bold").grid(row=11, column=0)
Label(self.tab_vermittler_neu, text="Telefax", font="Helvetica 13 bold").grid(row=11, column=2)
neu1 = Entry(self.tab_vermittler_neu, font=10)
neu1.grid(row=0, column=0)
neu2 = Entry(self.tab_vermittler_neu, font=10)
neu2.grid(row=0, column=2)
neu3 = Entry(self.tab_vermittler_neu, font=10)
neu3.grid(row=0, column=4)
neu4 = Entry(self.tab_vermittler_neu, font=10)
neu4.grid(row=2, column=0)
neu5 = Entry(self.tab_vermittler_neu, font=10)
neu5.grid(row=2, column=2)
neu6 = Entry(self.tab_vermittler_neu, font=10)
neu6.grid(row=2, column=4)
neu7 = Entry(self.tab_vermittler_neu, font=10)
neu7.grid(row=4, column=0)
neu8 = Entry(self.tab_vermittler_neu, font=10)
neu8.grid(row=4, column=2)
neu9 = Entry(self.tab_vermittler_neu, font=10)
neu9.grid(row=6, column=0)
neu10 = Entry(self.tab_vermittler_neu, font=10)
neu10.grid(row=6, column=2)
neu11 = Entry(self.tab_vermittler_neu, font=10)
neu11.grid(row=8, column=0)
neu12 = Entry(self.tab_vermittler_neu, font=10)
neu12.grid(row=8, column=2)
neu13 = Entry(self.tab_vermittler_neu, font=10)
neu13.grid(row=10, column=0)
neu14 = Entry(self.tab_vermittler_neu, font=10)
neu14.grid(row=10, column=2)
Button(self.tab_vermittler_neu, text='Schließen', command=self.master.quit).grid(row=5, column=5, sticky=NSEW, pady=4)
Button(self.tab_vermittler_neu, text='Speichern').grid(row=6, column=5, sticky=NSEW, pady=4)
Button(self.tab_vermittler_neu, text='Abbruch').grid(row=7, column=5, sticky=NSEW, pady=4)
def login(self):
root.protocol("WM_DELETE_WINDOW", self.master.quit)
self.cursor.execute("SELECT * FROM mitarbeiter WHERE loginname = %s AND passwort = %s ", (self.benutzername.get(), self.passwort.get()))
row = self.cursor.fetchone()
self.benutzername.delete(0, END)
self.passwort.delete(0, END)
if row is not None:
print("Login erfolgreich!")
tkinter.messagebox.showinfo('Erfolgreich', 'Login Erfolgreich')
return self.layout_tabs(), self.kunde_neu(), self.kunde(), self.vermittler_neu()
else:
print("Fehler!")
tkinter.messagebox.showwarning('Warnung', 'Passwort oder Username war falsch')
def abbruch(self):
self.titel.delete(0, END)
self.name.delete(0, END)
self.vorname.delete(0, END)
self.anrede.delete(0, END)
self.geburtstag.delete(0, END)
self.steuer.delete(0, END)
self.finanzamt.delete(0, END)
self.strasse.delete(0, END)
self.hausnr.delete(0, END)
self.plz.delete(0, END)
self.ort.delete(0, END)
self.telefon.delete(0, END)
self.telefax.delete(0, END)
root = Tk()
root.title('WBS')
app = Application(root)
root.mainloop()
es in der "__init__" aufgerufen wird. (Zeile 18)
Mein Gedanke war es über die Variante mit "__del__" zu beenden.
was für mich wenig Sinn macht.
ps. Oder sollte ich lieber das komplette Login-verfahren in eine eigene Klasse packen um