首页 > 解决方案 > 需要帮助/推荐python。“访问”对象没有属性“用户名”

问题描述

我有 2 个文件。一个用于使用 tkinter 的登录 GUI,另一个用于登录/验证过程。在屏幕截图中,根文件运行得很好。当我运行登录文件时,会弹出 gui 框,但是当我关闭它时出现错误---->

 '''File "c:/Users/j/Desktop/pyth/login.py", line 20, in <module>
Log.auth()

文件“c:/Users/j/Desktop/pyth/login.py”,第 10 行,在 auth if (self.user == Application.capture(self).verify and self.pw == Application.capture(self) .verify2):文件“c:\Users\j\Desktop\pyth\root.py”,第 24 行,在捕获 self.verify=self.username.get() AttributeError: 'Acess' object has no attribute 'username' ''

我理解错误的含义,但我不确定如何修复它。最终,一旦单击“LOGIN”按钮,我将尝试从登录框中获取输入,并查看它是否与分配的用户和 pw 匹配,这就是登录文件中发生的事情。

login.py 代码(错误来自这里)

root.py 代码 (GUI)

标签: pythonclassuser-interfaceauthentication

解决方案


发生的情况是,当您运行 login.py 时,您在 root.py 中编写的代码由于from root import Application. 这就是 GUI 出现的原因。

然后,当您关闭 GUI 时,将Log = Acess(.., ...) then Log.auth()执行代码并在 login.py 的第 10 行将 self 传递给 Application 的捕获方法。

在捕获方法中,self.username试图访问不存在的 Acess 用户名,从而使代码崩溃

您可以移动 root.py 文件中的代码并将应用程序传递给 Acess 类并将其存储在一个属性中,该属性将用于 auth 函数而不是 Application

root = tk.tk()
app = Application(master=root)
root.mainloop
Log = Acess("user", "pwd")
Log.auth()

推荐阅读