shell中的错误消息,否则运行顺利

时间:2017-09-14 09:36:33

标签: python tkinter

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

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

我试图弄清楚为什么它在程序运行顺利时会向python shell输出错误?发生错误后,用户仍然可以输入用户名和密码,数据库检查工作正常,但错误打印在python shell中。

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 个答案:

答案 0 :(得分:0)

删除此行

self.pack()

您所谓的方法并不存在 编辑:
在代码中,未指定Login类从任何类继承。在这种情况下,有两种可能性。

Python2
如果未指定基类,则除了我们在类(more)中指定的自定义方法和属性外,该类几乎为空。

Python3

如果未指定基类,则默认情况下类继承自对象类(more)。

假设您使用的是python 3,则Login类的唯一基类是对象类。因此,要调用方法self.pack(),它应该在基类(对象类)或Login类中定义。但是该方法未在基​​类或Login类中定义。要查看对象类中定义的方法,可以使用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对象的pack方法。您可能需要更改

self.pack()

self.master.pack()

答案 1 :(得分:0)

您必须删除该行

Interlocked.Increment

Interlocked.Add方法的末尾,或者您必须从已定义self.pack() 方法的类继承__init__类。