Python Tkinter clear geht nicht?
```File "C:\Users\Marek\energyECO\Gewinnspiel\clearEntry.py", line 9, in register_user
vorname_entry.delete(0, END)
AttributeError: 'NoneType' object has no attribute 'delete'```
Das ist der Error
Und das der Code:
from tkinter import *
import csv
def register_user():
vorname_info = vorname.get()
nachname_info = nachname.get()
email_info = email.get()
# open the file in the write mode
with open('Benutzernamen.csv', 'a', newline='', encoding='UTF8') as f:
# create the csv writer
writer = csv.writer(f, delimiter =';')
# write a row to the csv file
row=[vorname_info, nachname_info, email_info]
writer.writerow(row)
# close the file
f.close()
#vorname_entry.delete(0, END)
#nachname_entry.delete(-0, END)
Label(screen1, text="energyECO")
vorname_entry.delete(0, 'end')
nachname_entry.delete(0, 'end')
email_entry.delete(0, 'end')
def register():
global screen1
screen1 = Toplevel(screen)
screen1.title("Gewinnspiel")
screen1.geometry("550x500")
global vorname
global nachname
global email
vorname = StringVar()
nachname = StringVar()
email = StringVar()
global vorname_entry
global nachname_entry
global email_entry
Label(screen1, text="Bitte tragen sie ihren Vor- und Nachnamen und außerdem ihre E-Mail ein", font=('Arial 15')).pack()
Label(screen1, text=" ").pack()
Label(screen1, text="Vorname * ", font=('Arial 12')).pack()
vorname_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=vorname).pack()
Label(screen1,text=" ").pack()
Label(screen1, text="Nachname * ", font=('Arial 12')).pack()
nachnamne_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=nachname).pack()
Label(screen1,text=" ").pack()
Label(screen1, text="E-Mail * ", font=('Arial 12')).pack()
email_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=email).pack()
Label(screen1,text=" ").pack()
Label(screen1,text=" ").pack()
Label(screen1,text=" ").pack()
Label(screen1, text="Mit der Teilnahme am Gewinnspiel und der Eingabe meine Daten erkläre ich mich bereit, den E-Mail Newsletter von energyECO monatlich zu erhalten.", font=("Arial 10")).pack()
Label(screen1,text=" ").pack()
Button(screen1, text="Daten senden", font=('Arial 20'), width="15", height="2", command=register_user).pack()
def close():
print("Closed!")
screen.destroy()
screen1.destroy()
def main_screen():
global screen
screen = Tk()
screen.geometry("300x250")
screen.title("energyECO")
Label(text="energyECO", bg="gray", width="300", height="2", font=("Calibri", 13)).pack()
Label(text=" ").pack()
Button(text="Gewinnspiel", height="2", width="30", command=register).pack()
Label(text=" ").pack()
Label(text=" ").pack()
Label(text=" ").pack()
Button(text="Close", command=close).pack()
Label(text=" ").pack()
screen.mainloop()
main_screen()
2 Antworten
In dem Code kann ich keinen Fehler finden. Wenn ich das Programm ausführe, funktioniert auch alles so, wie es soll (oder es wird zumindest keine Fehlermeldung ausgegeben).
Was ich mir denke, was den Fehler verursacht: Du musst das global-Keyword nicht nur da benutzen, wo du die globalen Variablen erzeugst, sondern auch da, wo du sie benutzt, wobei Python bei Lesezugriffen meistens noch kapiert, dass du die globale Variable meinst, aber sobald du was in eine globale Variable schreiben willst, ohne sie in der jeweiligen Prozedur als global markiert zu haben, wird nur eine lokale Variable erzeugt.
Ups habe delte geschrieben statt delete. Ist nicht der Fehler!
Irgendetwas geht trozdem nicht.
delete is not a not a attribute