0
我正在为tkinter创建一个用户登录/注册模块,并且正在测试它,但是当我尝试通过将两个字符串传递给用户字典:'instance'类型的字典错误参数是不可迭代的
TypeError: argument of type 'instance' is not iterable
这是为什么发生?我认为这两个变量都是字符串...
这里的模块代码:
import pickle
from Tkinter import *
class LoginBox:
def __init__(self, parent):
Label(parent, text="Username:").grid()
self.ubox=Entry(parent)
self.ubox.grid()
Label(parent, text="Password:").grid()
self.pbox=Entry(parent, show="*")
self.pbox.grid()
def check(self, userlist):
pswrd=self.pbox.get()
uname=self.ubox.get()
if uname in userlist and userlist[uname] == pswrd:
return True
else:
tkMessageBox.showinfo("Incorrect", "Incorrect username or password")
self.pbox.delete(0, "end")
class RegisterBox:
def __init__(self, parent):
Label(parent, text="Username:").grid()
self.uname=Entry(parent)
self.uname.grid()
Label(parent, text="Password:").grid()
self.pswrd=Entry(parent, show="*")
self.pswrd.grid()
def check(self, userlist):
pswrd=self.pswrd.get()
uname=self.uname.get()
if uname in userlist.users and userlist.users[uname] == pswrd:
return False
else:
userlist.adduser(uname, pswrd)
class UserList:
def __init__(self):
self.users={}
def adduser(self, user, pswrd):
self.users[user] = pswrd
def deluser(user):
del self.users[user]
这里是我的应用程序代码:
import tkMessageBox
from Tkinter import *
import loginutility as lu
root=Tk()
def check():
if logbox.check() == True:
tkMessageBox.showinfo("Success", "Good job!")
users=lu.UserList()
regbox=lu.RegisterBox(root)
Button(root, text="Register", command=lambda: regbox.check(users)).grid()
logbox=lu.LoginBox(root)
Button(root, text="Login", command=check).grid()
root.mainloop()
如果u提线,其中u得到这个错误 – AlokThakur
这将有助于始终显示完整的错误消息。有行号和其他有用的信息。 – furas