0

我的tkinter登录屏幕应用程序有一个错误,即当我单击登录按钮时,它只会显示错误。

from tkinter import *
from tkinter import messagebox


login_page = Tk()
login_page.title("login_page")
login_page.geometry("250x110")

def check_pass():
    if username == name and userpass == password:
        print("this code works")
    else :
        messagebox.askretrycancel(title="Try again",message="Wrong password ")



# name and password entry
log_name = Entry(login_page)
log_name.grid(row=0, column=1, pady=15)
log_pass = Entry(login_page)
log_pass.grid(row=1, column=1, pady=5)
name_label = Label(login_page, text="Name here:- ")
name_label.grid(row=0, column=0, pady=15)
password_label = Label(login_page, text="Password:- ")
password_label.grid(row=1, column=0, pady=5)

# LOG IN BUTTON
login_btn = Button(login_page, text="LOG IN", command=check_pass)
login_btn.grid(row=2, column=0, columnspan=2, ipadx=100, padx=5)

username = log_name.get()
userpass = log_pass.get()
name = "admin"
password= "admin"


mainloop()
4

1 回答 1

0

问题是因为usernamepassword变量在主块中,当您运行代码时,输​​入框是空的(最初),它分配''给变量。因此,为了克服这个问题,您应该在函数内部分配变量,现在只采用填充输入框的值。

代码:

from tkinter import *
from tkinter import messagebox


login_page = Tk()
login_page.title("login_page")
login_page.geometry("250x110")


def check_pass():
    username = log_name.get()
    userpass = log_pass.get()
    if username == name and userpass == password:
        messagebox.showinfo('Successfull','Login successfull')
    else:
        choice = messagebox.askretrycancel("Try again","Wrong password ")
        if choice == True:
            pass
        else:
            login_page.destroy()

......
# ALL THE SAME LINES OF CODE TILL

name = "admin"
password = "admin"


login_page.mainloop()

此外,由于您使用类似的消息框askretrycancel,您可以根据用户的选择执行某些操作。所以在这里我说如果用户点击重试,然后要求他们再次登录,或者关闭应用程序。您可以将其更改为您喜欢的任何内容(甚至也可以将其删除。)

并且还建议说login_page.mainloop(),只是为了让 tkinter 在以后的任何步骤中都不会感到困惑。

希望您的“错误”被清除,如果有任何错误,请告诉我:D

干杯

于 2020-08-11T12:44:46.157 回答