Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python shell中出现错误消息,但在其他情况下运行平稳_Python_Tkinter - Fatal编程技术网

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

Python shell中出现错误消息,但在其他情况下运行平稳,python,tkinter,Python,Tkinter,目前,我有一个程序,要求用户输入用户名和密码,并将其与数据库进行比较,以检查它们是否对应。如果他们这样做,用户被接受,如果他们不接受,他们将再次被询问。但是,当运行此操作时,代码会输出错误: ' AttributeError: 'Login' object has no attribute 'pack'' 我试图弄明白为什么程序运行平稳时它会将错误打印到pythonshell中,否则呢?在错误发生后,用户仍然可以输入用户名和密码,并且数据库检查工作正常,但错误会在python shell中打

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

 ' AttributeError: 'Login' object has no attribute 'pack''
我试图弄明白为什么程序运行平稳时它会将错误打印到pythonshell中,否则呢?在错误发生后,用户仍然可以输入用户名和密码,并且数据库检查工作正常,但错误会在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)
删除此行

self.pack()
您正在调用一个不存在的方法。
编辑:
在代码中,未指定登录类从任何类继承。在这种情况下,有两种可能性

蟒蛇2
如果未指定基类,则该类将几乎为空,但在类()中指定的自定义方法和属性除外

蟒蛇3

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

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

但是可以从代码中推断,您正在尝试调用
master
对象的pack方法。你可能需要换衣服

self.pack()

删除此行

self.pack()
您正在调用一个不存在的方法。
编辑:
在代码中,未指定登录类从任何类继承。在这种情况下,有两种可能性

蟒蛇2
如果未指定基类,则该类将几乎为空,但在类()中指定的自定义方法和属性除外

蟒蛇3

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

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

但是可以从代码中推断,您正在尝试调用
master
对象的pack方法。你可能需要换衣服

self.pack()


你要么把这条线拔掉

self.pack()

\uuu init\uuu
方法的末尾,或者您必须从已定义
pack()
方法的类继承
Login
类。

您必须删除该行

self.pack()

\uuu init\uuu
方法的末尾,或者您必须从已经定义了
pack()
方法的类继承
Login
类。

您需要向我们展示如何使用
Login
类。错误告诉了您真相。
Login
类没有属性
pack
。你认为为什么会这样?
Login
类不是一个小部件,那么您为什么要在它上面调用
pack
?当您甚至不使用它时,您在创建什么
self.master
类属性
self.master
未在代码中的任何位置使用。您需要向我们展示如何使用
Login
类。错误告诉了您真相。
Login
类没有属性
pack
。你认为为什么会这样?
Login
类不是一个小部件,那么您为什么要在它上面调用
pack
?当您甚至不使用它时,您在创建什么
self.master
类属性<代码>self.master不在代码中的任何位置使用。不,tkinter不会在额外的线程中执行UI。如果他们使用IDLE或其他工具,该工具可能会在另一个线程中运行整个程序,但tkinter代码在一个线程中运行,该线程将是主线程,除非它显式放在另一个线程中。self.master.pack()不起作用。它生成错误“AttributeError:”\u tkinter.tkapp“对象没有属性“pack”。但是,删除self.pack()是可行的。即使OP没有显示它们对master使用的是什么,它很可能是沿着
root=Tk()
的思路进行的,如果是这样的话,那么
self.master.pack()
将不起作用,可能应该从您的答案中删除,因为没有足够的信息可以确定。根据反馈更新了我的答案否,tkinter不会在额外的线程中执行UI。如果他们使用IDLE或其他工具,该工具可能会在另一个线程中运行整个程序,但tkinter代码在一个线程中运行,该线程将是主线程,除非它显式放在另一个线程中。self.master.pack()不起作用。它生成错误“AttributeError:”\u tkinter.tkapp“对象没有属性“pack”。但是,删除self.pack()是可行的。即使OP没有显示它们对master使用的是什么,它很可能是沿着
root=Tk()
的思路进行的,如果是这样的话,那么
self.master.pack()
不起作用,可能应该从您的答案中删除,因为没有足够的信息可以确定。根据反馈更新了我的答案我不确定您的答案被否决的原因,但可能是因为缺乏详细信息。也许可以解释类对象类型是什么,以及为什么它没有
pack()
作为方法。仅仅说这个方法不存在并不能给那些已经不了解他们的类对象是什么的人增加任何意义。我不知道为什么你的答案被否决了,但可能是因为缺乏细节。也许可以解释类对象类型是什么,以及为什么它没有
pack()
作为方法。只是说说而已