我正在尝试制作一个tkinter登录表单,程序应该允许现有用户在输入框中键入他们的用户名和密码,然后python需要读取存储在csv文件上的值,然后检查用户名和密码是否正确,然后使用提交按钮检查凭据是否正确;它将允许他们转到下一帧。我不确定如何让它正常工作,因为提交按钮什么也做不了。
下面是我的代码:
class MainMenu(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label = tk.Label(self, text=" Main Menu - Login ", fg="red", font=controller.title_font2)
label.pack(side="top", fill="x", pady=20)
usernameL = tk.Label(self, text="Username").pack(side="top")
uUserLogin = tk.Entry(self)
uUserLogin.pack()
passwordL = tk.Label(self, text="Password").pack(side="top")
uUserPassword = tk.Entry(self)
uUserPassword.pack()
def checkUser():
uLoginUser = False
uLoginPassword = False
uUserCheck = uUserLogin.get()
uUserCheckP = uUserPassword.get()
with open("Users.csv", "r") as f:
csvreader = csv.reader(f, delimiter=",")
for row in csvreader:
if uUserCheck == row[0]:
uLoginUser == True
if uUserCheckP == row[1]:
uLoginPassword == True
#labelT = tk.Label(self, text="Hello")
#labelT.pack()
if uLoginUser and uLoginPassword == True:
controller.show_frame("MainTMenu")
submit = tk.Button(self, text="Submit",
command=checkUser())
submit.pack()
#If correct -> Go to next framecsv文件的布局第一行是两个标题-第一列表示“用户”,第二列表示“密码”-其余行包括正确列和正确行中的用户和密码。
这可能有助于理解格式(以防我解释得不好):
Users, Passwords
user, password
user, password任何帮助都将不胜感激
发布于 2019-05-16 08:28:41
提交按钮不做任何事情
这很容易修复,问题是你的函数init创建了它调用命令的按钮,而不是存储它的command=checkUser(),有两种方法可以修复这个问题。
将按钮的命令选项更改为command=checkUser或command=lambda: checkUser()
为了修复登录表单的工作方式,我更改了checkUser()函数,下面是我的更新
def checkUser():
uUserCheck = uUserLogin.get()
uUserCheckP = uUserPassword.get()
with open("Users.csv", "r") as f:
csvreader = csv.reader(f, delimiter=",")
for row in csvreader:
if uUserCheck == row[0] and uUserCheckP == row[1]:
labelT = tk.Label(self, text="Hello")
labelT.pack()
controller.show_frame("MainTMenu")
break这样就不再使用嵌套的if语句,如果找到用户名和密码的匹配项,就会终止for循环,这样就不必每次都检查用户名和密码选项。
如果您有任何其他问题,请随时提问:)
https://stackoverflow.com/questions/56158865
复制相似问题