Попытка создать имя пользователя и пароль для входа в следующее окно tkinter. Если пользователь и правильно введет пароль, кнопка перейдет на следующий экран - PullRequest
0 голосов
/ 06 ноября 2019

Вот метки и кнопки, которые я использую, я хочу, чтобы кнопка входа в систему проверяла пароли в коде, а затем, если все правильно, перейдите на следующий экран.

from tkinter import *

root = Tk()

# Main window of Application
root.title("Please Login")
root.geometry("300x150")
root.config(background='lightblue', borderwidth=5)


# Creating Label Widget
myLabel1 = Label(root, text="Username :", background='lightblue')
myLabel2 = Label(root, text="Password :", background='lightblue')
# Entry fields
username_1 = Entry(root)
password_1 = Entry(root, show='*')


# Putting labels onto screen

myLabel1.grid(row=0, column=0)
myLabel2.grid(row=1, column=0)

# Entry field Locations
username_1.grid(row=0, column=1)
password_1.grid(row=1, column=1)

Здесь у меня есть кнопка выхода из команды, но мне не хватает команды для входа в следующее окно.

# Creating Buttons
loginButton1 = Button(root, text="Login")
cancelButton3 = Button(root, text="Cancel", command=quit)

# Putting buttons onto screen

loginButton1.grid(row=6, column=1)
cancelButton3.grid(row=7, column=1)


# New window

root.mainloop()

1 Ответ

0 голосов
/ 07 ноября 2019

Это много для одного вопроса ... Я постараюсь дать вам представление о том, как вы можете это сделать. Я обычно не создаю совершенно новое окно;Я просто меняю уже существующее окно.

from tkinter import *

root = Tk()

# Main window of Application
root.title("Please Login")
root.geometry("300x150")
root.config(background='lightblue', borderwidth=5)

# Possible Login
possible_users = {'user1': 'user1_pass', 'user2': 'user2_pass'}  # dictionary of corresponding user name and passwords

# StringVars
the_user = StringVar()  # used to retrieve input from entry
the_pass = StringVar()

# Creating Label Widget
myLabel1 = Label(root, text="Username :", background='lightblue')
myLabel2 = Label(root, text="Password :", background='lightblue')
bad_pass = Label(root, text="Incorrect Username or Password")

# Entry fields
username_1 = Entry(root, textvariable=the_user)
password_1 = Entry(root, show='*', textvariable=the_pass)


# Putting labels onto screen

myLabel1.grid(row=0, column=0)
myLabel2.grid(row=1, column=0)

# Entry field Locations
username_1.grid(row=0, column=1)
password_1.grid(row=1, column=1)


def login(user):
    forget_login_window()
    next_window(user)


def check_login():
    requested_user = the_user.get()
    try:
        if possible_users[requested_user] == the_pass.get():
            login(requested_user)
        else:
            bad_pass.grid(row=2, column=1)
    except KeyError:
        bad_pass.grid(row=2, column=1)


loginButton1 = Button(root, text="Login", command=check_login)
cancelButton3 = Button(root, text="Cancel", command=quit)

# Putting buttons onto screen

loginButton1.grid(row=6, column=1)
cancelButton3.grid(row=7, column=1)


# New window

def forget_login_window():  # forget all the grid items.
    username_1.grid_forget()
    password_1.grid_forget()
    myLabel1.grid_forget()
    myLabel2.grid_forget()
    loginButton1.grid_forget()
    cancelButton3.grid_forget()
    bad_pass.grid_forget()


def next_window(my_user):
    root.title(my_user)  # desired changes here 
    #  you will need to create your tkinter objects (buttons, labels etc) in global and pack / grid / place them here.


root.mainloop()
...