Seite 1 von 1

Mit Button-Methode in Textfeld schreiben

Verfasst: Sonntag 3. September 2017, 12:07
von caiusjuliuscaesar
Hallo,
(ich bin natürlich Anfänger, aber wo liegt der Fehler?)

Ich habe eine Klasse, die einen Dialog mit Tkinter aufblenden soll. Bei jedem Buttonclick soll etwas in ein Textfeld geschrieben werden. Ich habs mal so versucht:

Code: Alles auswählen

import tkinter as tk
from tkinter import *

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.pack()

        self.btn = tk.Button(self)
        self.btn["text"] = "Start"
        self.btn["command"] = self.report()
        self.btn.pack(side="right")

        self.btnQuit = tk.Button(self, text="QUIT", fg="red",command=root.destroy)
        self.btnQuit.pack(side="right")

        self.tB = Text()
        self.tB.insert(END, "Gurkensalat\nCurrywurst\nPommes\n")
        self.tB.pack(side="right")

    def report(self):
        self.tB.insert(END, "Just a text Widget\nin two lines\n")
        

root = tk.Tk()
app = Application(master=root)
app.mainloop()
Bei Buttoncklick wird also die Methode report() aufgerufen. Diese kennt aber, obwohl Memberfunktion der Klasse, das Textfeld tB nicht.
Fehlermeldung:
line 25, in report self.tB.insert(END, "Just a text Widget\nin two lines\n")
AttributeError: 'Application' object has no attribute 'tB'
Wo liegt hier der Fehler bzw. was kann man tun?

Gruß, CJC

Re: Mit Button-Methode in Textfeld schreiben

Verfasst: Sonntag 3. September 2017, 12:22
von kbr
self.report() wird bereits in Zeile 11 aufgerufen, zu dem Zeitpunkt ist self.tB aber noch nicht definiert. Der Fehler ist der Aufruf (also die Klammern), du darfst nur die Methode selbst zuweisen. Zeile 2 solltest Du entfernen und den Code entsprechend anpassen.

Re: Mit Button-Methode in Textfeld schreiben

Verfasst: Sonntag 3. September 2017, 12:32
von caiusjuliuscaesar
Der Wahnsinn!!

Danke!!!

Re: Mit Button-Methode in Textfeld schreiben

Verfasst: Sonntag 3. September 2017, 16:30
von Alfons Mittelmeyer
caiusjuliuscaesar hat geschrieben:Hallo,
(ich bin natürlich Anfänger, aber wo liegt der Fehler?)
Hast Du schon richtig kapiert, was kbr geschrieben hatte? Die Methode zuweisen aber nicht aufrufen. Beim Aufrufen kennt sie nicht tB. Aber was noch wichtiger ist. Da es keinen Returnwert gibt, ist der Returnwert 'none'. was willst Du mit einem command auf 'none'?

Re: Mit Button-Methode in Textfeld schreiben

Verfasst: Sonntag 3. September 2017, 17:41
von kbr
Warum so grantig?