【发布时间】:2022-01-02 22:06:06
【问题描述】:
我正在尝试通过 Tkinter 创建登录屏幕,并且我希望消息框在用户输入正确的用户名和密码或未正确输入时显示消息。 当我运行程序并输入用户名和密码时,没有出现消息框。有没有办法解决这个问题?
from tkinter import *
from tkinter import messagebox
root = Tk()
root.geometry("300x270")
root.title("staff login")
root.resizable(False, False)
root.configure(background ="black")
label = Label(root, text = "staff log-in")
frame_heading = Frame(root)
frame_heading.grid(row=0, column=0, columnspan=2, padx=25,pady=10)
frame_entry = Frame(root)
frame_entry.grid(row=1, column=0, columnspan=2, padx=25, pady=10)
Label(frame_heading,text ="Staff log-in",
font =('Arial',16))\
.grid(row=0, column=0, padx=0, pady=5)
Label(frame_entry, text = "Username: ")\
.grid(row=2, column=0, padx=10, pady=5)
label(frame_entry, text = "Password: ")\
.grid(row=3, column=0, padx=10, pady=5)
def login():
label.config (text = "log in")
username = Entry(frame_entry, width = 15, bg = "white")
username.grid(row=2, column=1, padx=5,pady=5)
password = Entry(frame_entry, width = 15, bg = "white")
password.grid(row=3, column=1, padx=5,pady=5)
loginbutton = Button(root, text="Login",width=7,
command=login)
loginbutton.grid(row=2, column=0, padx=0, pady=5)
def loginbutton():
username = username_entry.get()
password = password_entry.get()
if (username == 'admin' and password == 'abcd1234'):
messagebox.showinfo('info', 'Correct Login')
else:
messagebox.showinfo('info', 'Invalid Login')
root.mainloop()
【问题讨论】:
-
代码的哪一部分调用
loginbutton?它永远不会被调用。也不要将变量命名为与函数相同的名称,它是Label而不是label(在您的其中一行上)。 -
我猜你来自不同的语言。在 python 中,你不需要
if周围的括号。 -
你有一个函数和一个名为
loginbutton的变量,你永远不会调用消息框代码所在的函数。
标签: python tkinter tkmessagebox