Seite 1 von 1

Probleme mit get

Verfasst: Mittwoch 3. März 2010, 20:49
von sedi
Hallo zusammen,

wollte mit Tkinter einen Wizard schreiben, der Daten sammelt und diese dann letztlich in eine Datei speichert.

Nun habe ich bereits zu Beginn das Problem, dass die Texteinträge nicht abrufbar sind. Es heißt immer wieder, dass ein NoneType - Objekt keine insert() - Methode besitzt.

Die insert() - Methode habe ich nur in den Code eingefügt, um festzustellen, wo die Variable noch gesetzt ist - offensichtlich gleich danach nicht mehr :-(

Warum wird self.Titel = Entry(...) nicht gesetzt?

Code: Alles auswählen

class Artikeldaten(object):
    def __init__(self):
        self.Titel = "" #StringVar()
        self.Published = "" #StringVar()
        self.Autor = "" #StringVar()
        self.Status = "" #StringVar()
        self.Teaser = "" #StringVar()
        self.Text = "" #StringVar()
        self.Bilder = []


class App(object):

    def __init__(self, master, Artikel):
        master.title("Schritt 1 - neuer Artikel")
        self.Artikel = Artikel

        frame = Frame(master, width=600, height=600, borderwidth = 1)
        frame.pack()
        self.createWidgets_step1(frame)

    def back(self):
        pass

    def nextstep(self):
        self.Artikel.Titel = self.Titel.get()
        self.Artikel.Autor = self.Autor.get()
        self.Artikel.Status = self.Status.get()
        
    def createWidgets_step1(self, frame):
        self.Lbls = [] # alle Labels werden hier gesammelt

        self.Titel = Entry(frame, width=50).grid(row=0, column=1)
        self.Titel.insert("ASDFFEW")
        self.Lbls.append( Label(frame, text="Titel").grid(row=0) )
        HILFE="Hilfe: Der Titel des Artikels"
        self.Lbls.append( Label(frame, text=HILFE).grid(row=1, column=1) )
        print self.Titel.get()

        self.Autor = Entry(frame, width=50).grid(row=2, column=1)
        self.Lbls.append( Label(frame, text="Autor").grid(row=2) )
        HILFE="Hilfe: Der Autor im Format 'j. sedlak'"
        self.Lbls.append( Label(frame, text=HILFE).grid(row=3, column=1) )

        self.Status = Entry(frame, width=50).grid(row=4, column=1)
        self.Lbls.append( Label(frame, text="Status").grid(row=4) )
        HILFE="Hilfe: Der Status kann entweder v (=visible) oder das Ennddatum im Format YYYYMMDD enthalten"
        self.Lbls.append(Label(frame, text=HILFE).grid(row=5, column=1) )

        self.Back = Button(frame, text="Zurück <<", command=self.back)
        self.Back.grid(row=6)

        self.Weiter = Button(frame, text="Weiter >>", command=self.nextstep)
        self.Weiter.grid(row=6, column=1)

        self.Abbruch = Button(frame, text="Abbruch", command=frame.quit)
        self.Abbruch.grid(row=6, column=2)

    def destroyWidgets_step1(self,frame):
        self.Lbls = None
        self.Titel = None
        self.Autor = None
        self.Status = None


root = Tk()
app = App(root, Artikeldaten())
root.mainloop()

Re: Probleme mit get

Verfasst: Mittwoch 3. März 2010, 21:15
von numerix
sedi hat geschrieben:Warum wird self.Titel = Entry(...) nicht gesetzt?
Du erzeugst zwar eine Entry-Instanz, bindest aber nicht diese - wie beabsichtigt - an einen Namen, sondern den Rückgabewert der aufgerufenen grid()-Methode, und die liefert None zurück ...

[gelöst]

Verfasst: Donnerstag 4. März 2010, 16:32
von sedi
uups - waaaahnsinn, oft durchgelesen und den Fehler nicht erkannt!

Vielen, vielen Dank für die prompte Nachricht!