如何避免AttributeError:'_ tkinter.tkapp'对象没有属性'PassCheck'

时间:2016-07-06 17:13:33

标签: python tkinter

我之前阅读过有关此错误的帖子,但无法确定我做错了什么。请有人帮我理解我做错了什么,谢谢。

   from tkinter import *
   class Passwordchecker():
    def __init__(self):
       self= Tk()
       self.geometry("200x200")
       self.title("Password checker")
       self.entry=Entry(self)
       self.entry.pack()
       self.button=Button(self,text="Enter",command= lambda: self.PassCheck(self.entry,self.label))
       self.button.pack()
       self.label=Label(self,text="Please a password")
       self.label.pack()
       self.mainloop()
    def PassCheck(self1,self2):
       password = self1.get()
       if len(password)>=9 and len(password)<=12:
          self2.config(text="Password is correct")
       else:
          self2.config(text="Password is incorrect")

    run = Passwordchecker()

1 个答案:

答案 0 :(得分:2)

是什么触发了错误?

您收到以下错误消息:

AttributeError: '_tkinter.tkapp' object has no attribute 'PassCheck'

因为当初始化Passwordchecker()的实例时,它会在您mainloop()的{​​{1}}方法上遇到麻烦,该方法不允许您的程序识别属于该实例的任何其他方法。根据经验,从不__init__()内运行mainloop()。这完全修复了您上面的错误消息。但是,我们还有其他事情需要解决,为此,让我们重新设计您的计划:

设计

最好采用在__init__()内调用的其他方法来绘制GUI。我们称之为__init__()

说到initialize_user_interface(),首先需要将对象本身传递给此方法。这意味着传递给此方法的第一个参数是PassCheck()。这是我们实际需要的唯一参数self因为您可以从此方法访问您无用地传递给它的剩余参数。

程序

所以这是您需要的完整程序:

PassCheck(self)

演示

以下是正在运行的程序的屏幕截图:

enter image description here