Ich habe ein Tutorial gefolgt, und schrieb dieses Programm. Könnte mir jemand helfen, herauszufinden, warum ich die Fehlermeldung erhalte? „Anwendungsinstanz hat kein Attribut‚Text‘“Lernen Python, stecken in GUI-Programm, das nicht ausgeführt wird
from Tkinter import *
class Application(Frame):
""" A GUI application with three buttons."""
def __init__(self,master):
""" This initialized the Frame"""
Frame.__init__(self, master)
self.grid()
self.create_widgets()
self.buttonclicks = 0
def create_widgets(self):
"""Create a button that measures clicks."""
#create first button
self.button1 = Button(self, text = "Total Clicks: 0")
self.button1.grid()
self.instruction = Label(self, text= "Enters the password")
self.instruction.grid(row=0, column=0, columnspan=2, sticky=W)
self.password = Entry(self)
self.password.grid(row=1,column=1, sticky=W)
self.button1["command"] = self.update_count
self.button1.grid(row=2,column=0,sticky=W)
self.submit_button = Button(self, text="Submit", command=self.reveal())
self.texts = Text(self, width=35, height=5,wrap=WORD)
self.texts.grid(row=4,column=1,columnspan=2,sticky=W)
def update_count(self):
"""Increase this click count and display the new total"""
self.buttonclicks += 1
self.button1["text"] = "Total Clicks: " + str(self.buttonclicks)
def reveal(self):
"""Reveal the password"""
content = self.password.get()
messsage=""
if content == "password":
message = "You have access to the data."
else:
message = "Access denied."
self.texts.insert(0.0,message)
root = Tk()
root.title("GUI test")
root.geometry("250x185")
app = Application(root)
root.mainloop()
Die Sache ist, ich habe bereits ein Textfeld als ‚Texte‘ definiert, und wenn es das Kennwort aus den Attributen bekommen kann, sehe ich keinen Grund, es nicht bekommen würde Texte.
Edit: wurde für den Fehler gefragt:
Traceback (most recent call last):
File "clickcounter.py", line 58, in <module>
app = Application(root)
File "clickcounter.py", line 10, in __init__
self.create_widgets()
File "clickcounter.py", line 28, in create_widgets
self.submit_button = Button(self, text="Submit", command=self.reveal())
File "clickcounter.py", line 49, in reveal
self.texts.insert(0.0,message)
AttributeError: Application instance has no attribute 'texts'
Können Sie die Stack-Trace, die Ihnen diese Fehlermeldung gibt? Es erleichtert das Durchsehen Ihres Codes. –
Als generelle Regel, um ein Nitpick zu sein, versuchen Sie '*' glob Importe in Python zu vermeiden. Es ist viel klarer und einfacher, Code zu debuggen, wenn Sie jedes Ding explizit importieren (d. H. Von "Tkinter importieren Text, Entry, Button, Label") oder einfach "Tkinter importieren" und alles explizit aufrufen, dh. 'Tkinter.Text (...)' –
Guter Tipp. Ich habe die Fehlermeldung zum ursprünglichen Beitrag hinzugefügt. – twoshoes