代码之家  ›  专栏  ›  技术社区  ›  Ashley

shell中有错误消息,但在其他情况下运行平稳

  •  1
  • Ashley  · 技术社区  · 9 年前

    目前,我有一个程序,要求用户输入用户名和密码,并将其与数据库进行比较,以检查它们是否对应。如果他们这样做,用户被接受,如果他们不接受,他们将再次被询问。但是,当运行此操作时,代码输出错误:

     ' AttributeError: 'Login' object has no attribute 'pack''
    

    from tkinter import *
    import tkinter.messagebox as tm
    import sqlite3
    
    class Login:
        def __init__(self,master):
            self.master = master
            master.title = ("Please login.")
    
            self.label_1 = Label(master, text="Username")
            self.label_2 = Label(master, text="Password")
            self.entry_1 = Entry(master)
            self.entry_2 = Entry(master)
    
            self.label_1.grid(row=0, sticky=E)
            self.label_2.grid(row=1, sticky=E)
            self.entry_1.grid(row=0, column=1)
            self.entry_2.grid(row=1, column=1)
    
            self.logbtn = Button(master, text="Login", command = self._login_btn_clickked)
            self.logbtn.grid(columnspan=2)
            self.pack()
    
    def _login_btn_clickked(self):
        print(self.entry_1.get())
        print(self.entry_2.get())
    
        username = (self.entry_1.get())
        password = (self.entry_2.get())
    
        GetDatabase(username,password)
    
    2 回复  |  直到 9 年前
        1
  •  0
  •   Mitiku    9 年前

    删除此行

    self.pack()
    


    编辑:
    在代码中,登录类未指定为从任何类继承。在这种情况下,有两种可能性。

    蟒蛇2
    当没有指定基类时,除了我们在类中指定的自定义方法和属性外,该类几乎为空( more ).

    蟒蛇3

    更多 ).

    假设您使用的是python 3,Login类的唯一基类是object类。因此调用方法self。pack()它应该在基类(对象类)或登录类中定义。但该方法未在基类或登录类中定义。要查看在对象类中定义的方法,可以使用以下代码 here .

    methodList = [method for method in dir(object) if callable(getattr(object, method))]
    print(methodList)
    ['__class__', '__delattr__', '__format__', '__getattribute__', '__hash__','__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__','__setattr__', '__sizeof__', '__str__', '__subclasshook__']
    

    master 对象你可能需要改变

    自己包装()
    

    self.master.pack()
    
        2
  •  0
  •   zimmerrol    9 年前

    你要么把这条线移走

    self.pack()
    

    __init__ 方法,否则您必须继承 Login pack()