首页 > 解决方案 > 登录屏幕哪里出了问题(Def Login)

问题描述

我正在做一些学校工作,我正在开发一个汽车租赁应用程序,我正在研究基础知识并在我前进的过程中学习。到目前为止,该应用程序的其余部分都在工作,但我正在研究为什么我的用户登录屏幕无法正常工作。

我已经尝试在我的注册屏幕中实现一些类似的代码(它可以完美地工作)但是代码会启动,但是当我按下登录时我没有显示任何窗口,这可能是一个简单的错误,但这可能是由于我缺乏经验哈哈,我也尝试过使用全局变量,但这就是我觉得我缺乏了解全局变量以及在哪里适当使用它们的最知识的地方。

import tkinter as tk

def register():
    top = tk.Toplevel(root)  # create a GUI window
    top.title("Register")
    top.geometry("400x350")
    username = tk.StringVar(top)
    password = tk.StringVar(top)
    email = tk.StringVar(top)
    tk.Label(top, text="Please enter your details below", bg="red").pack()
    tk.Label(top, text="Email * ").pack()
    tk.Entry(top, textvariable=email).pack(padx=10, pady=10)
    tk.Label(top, text="Username * ").pack()
    tk.Entry(top, textvariable=username).pack(padx=10, pady=10)
    tk.Label(top, text="Password * ").pack()
    tk.Entry(top, textvariable=password, show='*').pack(padx=10, pady=10)
    tk.Button(top, text="Register", width=10, height=2, bg="red").pack()

def login():
    login_screen = tk.Toplevel(root) 
    login_screen.title("Login")  
    login_screen.geometry("300x250") 
    username_verify = tk.StringVar(login_screen) 
    password_verify = tk.StringVar(login_screen)
    tk.Label(login_screen, text="Please enter details below to login").pack()
    tk.Label(login_screen, text="").pack()

    global username_login_entry
    global password_login_entry

    tk.Label(login_screen, text="Username * ").pack()
    username_login_entry = tk.Entry(login_screen, textvariable=username_verify)
    username_login_entry.pack()
    tk.Label(login_screen, text="").pack()
    tk.Label(login_screen, text="Password * ").pack()
    password_login_entry = tk.Entry(login_screen, textvariable=password_verify, show='*')
    password_login_entry.pack()
    tk.Label(login_screen, text="").pack()
    tk.Button(login_screen, text="Login", width=10, height=1, command=login_verify).pack()

root = tk.Tk()
root.geometry("700x450")
root.title("Account Login")
root.wm_iconbitmap('py.ico')
tk.Label(root, text="Login or Register", bg="red", width="300", height="2", font=("Arial Black", 13,)).pack()
tk.Button(root, text="Login", height="4", width="30", font=("Arial Black", 13,)).pack(padx=15, pady=15)
tk.Button(root, text="Register", height="4", width="30", font=("Arial Black", 13,), command=register).pack()

root.mainloop()

在这段代码中,我特别查看了代码的 Def Login 部分,但我提供了我所有的行作为上下文,以帮助您了解是否存在链接到其他函数的任何问题。预期的输出将是单击时登录窗口打开的位置。

标签: pythonpython-3.x

解决方案


您已经正确地完成了定义,但是您从未在任何地方使用过该功能。注意register函数是如何通过这一行调用的

tk.Button(root, text="Register", height="4", width="30", font=("Arial Black", 13,), command=register).pack()

command=register是按下按钮时调用该功能的原因。但是,您没有与登录按钮关联的命令。

tk.Button(root, text="Login", height="4", width="30", font=("Arial Black", 13,)).pack(padx=15, pady=15)

注意缺少command属性。我相信你现在知道该怎么做:)

login在你的定义中记住一件事。在最后一行,您正在调用command=login_verify. 我假设您只是将它作为稍后将要处理的函数的占位符,但这会引发异常,只是让您知道。


推荐阅读