Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter登录系统在成功登录后不会打开应用程序_Python_Authentication_Tkinter - Fatal编程技术网

Python Tkinter登录系统在成功登录后不会打开应用程序

Python Tkinter登录系统在成功登录后不会打开应用程序,python,authentication,tkinter,Python,Authentication,Tkinter,Tkinter登录系统在成功登录后不会打开应用程序。注册和登录后,应用程序不会打开。我希望这样,当您按下ok时,主应用程序窗口打开,您也可以通过写入和读取文本文件来保存数据。非常感谢,我是一个初学者,很抱歉给您带来不便 #导入模块 将tkinter作为tk导入 从tkinter.simpledialog导入askstring 从tkinter进口* 导入操作系统 #设计注册窗口 def寄存器(): 全局寄存器屏幕 寄存器屏幕=顶层(主屏幕) 注册屏幕标题(“注册”) 寄存器屏幕几何(“300x2

Tkinter登录系统在成功登录后不会打开应用程序。注册和登录后,应用程序不会打开。我希望这样,当您按下ok时,主应用程序窗口打开,您也可以通过写入和读取文本文件来保存数据。非常感谢,我是一个初学者,很抱歉给您带来不便

#导入模块
将tkinter作为tk导入
从tkinter.simpledialog导入askstring
从tkinter进口*
导入操作系统
#设计注册窗口
def寄存器():
全局寄存器屏幕
寄存器屏幕=顶层(主屏幕)
注册屏幕标题(“注册”)
寄存器屏幕几何(“300x250”)
全局用户名
全局密码
全局用户名\u条目
全局密码输入
username=StringVar()
密码=StringVar()
标签(注册屏幕,text=“请在下面输入详细信息”,bg=“蓝色”).pack()
标签(注册屏幕,文本=”).pack()
用户名标签=标签(注册屏幕,text=“username*”)
用户名\标签.pack()
用户名\输入=输入(注册\屏幕,文本变量=用户名)
用户名\u entry.pack()
密码标签=标签(注册屏幕,text=“password*”)
密码标签.pack()
密码输入=输入(注册屏幕,文本变量=密码,显示='*'))
密码\u entry.pack()
标签(注册屏幕,文本=”).pack()
按钮(register\u屏幕,text=“register”,宽度=10,高度=1,bg=“blue”,命令=register\u user).pack()
#设计登录窗口
def login():
全局登录屏幕
登录屏幕=顶层(主屏幕)
登录屏幕标题(“登录”)
登录屏幕几何(“300x250”)
标签(登录屏幕,text=“请在下面输入详细信息以登录”).pack()
标签(登录屏幕,文本=”).pack()
全局用户名\u验证
全局密码验证
username\u verify=StringVar()
密码\u验证=StringVar()
全局用户名\u登录\u条目
全局密码\u登录\u条目
标签(登录屏幕,text=“Username*”).pack()
用户名\登录\条目=条目(登录\屏幕,文本变量=用户名\验证)
username\u login\u entry.pack()
标签(登录屏幕,文本=”).pack()
标签(登录屏幕,text=“Password*”).pack()
密码\登录\条目=条目(登录\屏幕,文本变量=密码\验证,显示='*'))
密码\登录\条目.pack()
标签(登录屏幕,文本=”).pack()
按钮(登录屏幕,text=“login”,宽度=10,高度=1,命令=login\u verify).pack()
#在寄存器按钮上实现事件
def register_user():
username\u info=username.get()
password\u info=password.get()
文件=打开(用户名信息,“w”)
file.write(用户名\信息+“\n”)
文件写入(密码信息)
file.close()文件
用户名\u项。删除(0,结束)
密码\u项。删除(0,结束)
标签(注册屏幕,text=“注册成功”,fg=“绿色”,font=(“calibri”,11)).pack()
#在登录按钮上实现事件
def login_verify():
username1=username\u verify.get()
password1=password\u verify.get()
用户名\登录\条目。删除(0,结束)
密码\登录\条目。删除(0,结束)
文件列表=os.listdir()
如果\u文件列表中的username1:
file1=open(username1,“r”)
验证=file1.read().splitlines()
如果验证中的password1:
登录成功()
其他:
密码未被识别()
其他:
找不到用户()
#为登录成功设计弹出窗口
def login_success():
全局登录\u成功\u屏幕
登录\成功\屏幕=顶级(登录\屏幕)
登录成功屏幕标题(“成功”)
登录成功屏幕几何(“150x100”)
标签(登录成功屏幕,text=“登录成功”).pack()
按钮(登录成功屏幕,text=“OK”,command=delete\u登录成功)。pack()
#为登录无效密码设计弹出窗口
def密码未被识别()
全局密码\u不\u记录\u屏幕
密码\未\记录\屏幕=顶级(登录\屏幕)
密码未记录屏幕标题(“成功”)
密码不记录屏幕几何(“150x100”)
标签(密码不记录屏幕,text=“无效密码”).pack()
按钮(密码未记录屏幕,text=“确定”,命令=删除密码未识别)。pack()
#为未找到的用户设计弹出窗口
def用户未找到():
全局用户未找到屏幕
用户未找到屏幕=顶层(登录屏幕)
用户未找到屏幕标题(“成功”)
用户未找到屏幕几何(“150x100”)
标签(用户未找到屏幕,text=“用户未找到”).pack()
按钮(用户未找到屏幕,text=“确定”,命令=删除用户未找到屏幕)。pack()
#删除弹出窗口
def delete_login_success():
登录\成功\屏幕。销毁()
def delete_password_not_recognized():
密码不记录屏幕。销毁()
def delete_user_not_found_screen():
用户未找到屏幕。销毁()
#设计主(第一)窗口
def主帐户屏幕()
全局主屏幕
主屏幕=Tk()
主屏幕几何(“300x250”)
主屏幕标题(“帐户登录”)
标签(text=“选择您的选择”,bg=“蓝色”,width=“300”,height=“2”,font=(“Calibri”,13)).pack()
标签(text=”“).pack()
按钮(text=“Login”,height=“2”,width=“30”,command=Login).pack()
标签(text=”“).pack()
按钮(text=“Register”,height=“2”,width=“30”,command=Register).pack()
main_screen.mainloop()
主帐户屏幕()
关键点=(“比赛”、“进球”、“助攻”、“YC”、“RC”)
#创建一个播放器并保存到“存储的数据”中
def create_球员(姓名、比赛=0、进球=0、助攻=0、yc=0、rc=0):
统计={}
对于关键点,val在zip中(关键点,(比赛、进球、助攻、yc、rc)):
statistics[key]=tk.IntVar(value=val)
存储的数据[名称]=统计信息
#编辑玩家统计信息的通用函数
def edit_播放器(父级,名称):
def变化(变量、增量):
value=var.get()+delta
如果值>=0:
def next_main_screen():
    global root
    main_screen.withdraw()
    root=Toplevel()
    global stored_data
    stored_data = {}
    # store player data
    create_player('Daniel Keelagher', 10, 4, 4, 0, 0)
    create_player('Joseph Keelagher', 10, 2, 2, 1, 0)
    create_player('Benjamin Miller', 10, 0, 0, 1, 0)
    create_player('Joran Terlato', 8, 1, 1, 3, 1)
    create_player('Arki Gantzos', 9, 3, 2, 0, 0)
    create_player('Billy Houndalas', 10, 0, 0, 0, 0)
    create_player('Hayato Uematsu', 9, 2, 3, 0, 0)
    create_player('Mark Boccari', 10, 1, 1, 2, 0)
    create_player('Oliver Gibson', 7, 1, 2, 0, 0)
    create_player('Zaid Khaleqi', 9, 2, 0, 0, 0)
    root.protocol("WM_DELETE_WINDOW",lambda: [root.destroy(),main_screen.destroy()])
    # Application title
    tk.Label(text="Chelsea FC Player Statistics", font=(None, 15, 'bold'), fg="blue",).pack(pady=5)

    # a frame for showing player statistics
    table_frame = tk.Frame(root)
    table_frame.pack()

    # table headings
    font="Helvetica 13 bold"
    tk.Label(table_frame, text="Player Name", font=font, anchor="w", width=20, fg="white", bg="blue").grid(row=0, column=0, sticky="ew")
    for col, key in enumerate(KEYS, 1):
        tk.Label(table_frame, text=key, font=font, width=12, fg="white", bg="blue").grid(row=0, column=col)
    tk.Label(table_frame, font=font, anchor="w", fg="white", bg="blue").grid(row=0, column=col+1, sticky="ew")

    # player statistics table
    for row, name in enumerate(stored_data, 1):
        add_player_row(table_frame, row, name)

    # add new player button
    tk.Button(root, text="Add New Player", command=lambda: new_player(table_frame)).pack(pady=5)
    # Main loop of tkinter
def delete_login_success():
    login_success_screen.destroy()
    next_main_screen()
    login_screen.destroy()

#import modules
import tkinter as tk
from tkinter.simpledialog import askstring
from tkinter import *
import os
 
# Designing window for registration
 
def register():
    global register_screen
    register_screen = Toplevel(main_screen)
    register_screen.title("Register")
    register_screen.geometry("300x250")
 
    global username
    global password
    global username_entry
    global password_entry
    username = StringVar()
    password = StringVar()
 
    Label(register_screen, text="Please enter details below", bg="blue").pack()
    Label(register_screen, text="").pack()
    username_lable = Label(register_screen, text="Username * ")
    username_lable.pack()
    username_entry = Entry(register_screen, textvariable=username)
    username_entry.pack()
    password_lable = Label(register_screen, text="Password * ")
    password_lable.pack()
    password_entry = Entry(register_screen, textvariable=password, show='*')
    password_entry.pack()
    Label(register_screen, text="").pack()
    Button(register_screen, text="Register", width=10, height=1, bg="blue", command = register_user).pack()
 
 
# Designing window for login 
 
def login():
    global login_screen
    login_screen = Toplevel(main_screen)
    login_screen.title("Login")
    login_screen.geometry("300x250")
    Label(login_screen, text="Please enter details below to login").pack()
    Label(login_screen, text="").pack()
 
    global username_verify
    global password_verify
 
    username_verify = StringVar()
    password_verify = StringVar()
 
    global username_login_entry
    global password_login_entry
 
    Label(login_screen, text="Username * ").pack()
    username_login_entry = Entry(login_screen, textvariable=username_verify)
    username_login_entry.pack()
    Label(login_screen, text="").pack()
    Label(login_screen, text="Password * ").pack()
    password_login_entry = Entry(login_screen, textvariable=password_verify, show= '*')
    password_login_entry.pack()
    Label(login_screen, text="").pack()
    Button(login_screen, text="Login", width=10, height=1, command = login_verify).pack()
 
# Implementing event on register button
 
def register_user():
 
    username_info = username.get()
    password_info = password.get()
 
    file = open(username_info, "w")
    file.write(username_info + "\n")
    file.write(password_info)
    file.close()
 
    username_entry.delete(0, END)
    password_entry.delete(0, END)
 
    Label(register_screen, text="Registration Success", fg="green", font=("calibri", 11)).pack()
 
# Implementing event on login button 
 
def login_verify():
    username1 = username_verify.get()
    password1 = password_verify.get()
    username_login_entry.delete(0, END)
    password_login_entry.delete(0, END)
 
    list_of_files = os.listdir()
    if username1 in list_of_files:
        file1 = open(username1, "r")
        verify = file1.read().splitlines()
        if password1 in verify:
            login_sucess()
            
 
        else:
            password_not_recognised()
 
    else:
        user_not_found()
 
# Designing popup for login success
 
def login_sucess():
    global login_success_screen
    login_success_screen = Toplevel(login_screen)
    login_success_screen.title("Success")
    login_success_screen.geometry("150x100")
    Label(login_success_screen, text="Login Success").pack()
    Button(login_success_screen, text="OK", command=delete_login_success).pack()
    
# Designing popup for login invalid password
 
def password_not_recognised():
    global password_not_recog_screen
    password_not_recog_screen = Toplevel(login_screen)
    password_not_recog_screen.title("Success")
    password_not_recog_screen.geometry("150x100")
    Label(password_not_recog_screen, text="Invalid Password ").pack()
    Button(password_not_recog_screen, text="OK", command=delete_password_not_recognised).pack()
 
# Designing popup for user not found
 
def user_not_found():
    global user_not_found_screen
    user_not_found_screen = Toplevel(login_screen)
    user_not_found_screen.title("Success")
    user_not_found_screen.geometry("150x100")
    Label(user_not_found_screen, text="User Not Found").pack()
    Button(user_not_found_screen, text="OK", command=delete_user_not_found_screen).pack()
 
# Deleting popups
 
def delete_login_success():
    login_success_screen.destroy()
    next_main_screen()
    login_screen.destroy()
 
def delete_password_not_recognised():
    password_not_recog_screen.destroy()
 
 
def delete_user_not_found_screen():
    user_not_found_screen.destroy()
 
 
# Designing Main(first) window
 
def main_account_screen():
    global main_screen
    main_screen = Tk()
    main_screen.geometry("300x250")
    main_screen.title("Account Login")
    Label(text="Select Your Choice", bg="blue", width="300", height="2", font=("Calibri", 13)).pack()
    Label(text="").pack()
    Button(text="Login", height="2", width="30", command = login).pack()
    Label(text="").pack()
    Button(text="Register", height="2", width="30", command=register).pack()
 
    main_screen.mainloop()
 
 

KEYS = ("Matches Played", "Goals", "Assists", "YC", "RC")

# create a player and save into "stored_data"
def create_player(name, matches=0, goals=0, assists=0, yc=0, rc=0):
    statistics = {}
    for key, val in zip(KEYS, (matches, goals, assists, yc, rc)):
        statistics[key] = tk.IntVar(value=val)
    stored_data[name] = statistics


# a generic function to edit player statistics
def edit_player(parent, name):
    def change(var, delta):
        value = var.get() + delta
        if value >= 0:
            var.set(value)

    def create_form(parent, key, var):
        f = tk.Frame(parent, bd=1, relief="sunken")
        f.pack(side="left")
        tk.Label(f, text=key, width=12, fg="white", bg="blue").grid(row=0, column=0, columnspan=3)
        tk.Button(f, text="-", command=lambda: change(var, -1)).grid(row=1, column=0, sticky="ew")
        tk.Label(f, textvariable=var, width=3).grid(row=1, column=1)
        tk.Button(f, text="+", command=lambda: change(var, +1)).grid(row=1, column=2, sticky="ew")

    tp = tk.Toplevel(parent)
    tp.title("Edit Player Statistics")
    tk.Label(tp, text=name, font="Helvetica 14 bold").pack()
    frame = tk.Frame(tp)
    frame.pack()
    statistics = stored_data[name]
    for col, (key, var) in enumerate(statistics.items(), 1):
        create_form(frame, key, var)
    # make this toplevel like a modal dialog
    tp.grab_set()
    tp.wait_window()


# show player statistics
def add_player_row(parent, row, name):
    tk.Label(parent, text=name, anchor="w").grid(row=row, column=0, sticky="ew")
    statistics = stored_data[name]
    for col, key in enumerate(KEYS, 1):
        tk.Label(parent, textvariable=statistics[key]).grid(row=row, column=col)
    tk.Button(parent, text="Edit", command=lambda: edit_player(root, name)).grid(row=row, column=col+1)


# ask for new player name and create the player
def new_player(parent):
    # get player name
    name = askstring("New Player", "Player Name")
    if name:
        create_player(name)
        add_player_row(parent, len(stored_data), name)
def next_main_screen():
    global root
    main_screen.withdraw()
    root=Toplevel()
    global stored_data
    stored_data = {}
    # store player data
    create_player('Daniel Keelagher', 10, 4, 4, 0, 0)
    create_player('Joseph Keelagher', 10, 2, 2, 1, 0)
    create_player('Benjamin Miller', 10, 0, 0, 1, 0)
    create_player('Joran Terlato', 8, 1, 1, 3, 1)
    create_player('Arki Gantzos', 9, 3, 2, 0, 0)
    create_player('Billy Houndalas', 10, 0, 0, 0, 0)
    create_player('Hayato Uematsu', 9, 2, 3, 0, 0)
    create_player('Mark Boccari', 10, 1, 1, 2, 0)
    create_player('Oliver Gibson', 7, 1, 2, 0, 0)
    create_player('Zaid Khaleqi', 9, 2, 0, 0, 0)
    root.protocol("WM_DELETE_WINDOW",lambda: [root.destroy(),main_screen.destroy()])
    # Application title
    tk.Label(text="Chelsea FC Player Statistics", font=(None, 15, 'bold'), fg="blue",).pack(pady=5)

    # a frame for showing player statistics
    table_frame = tk.Frame(root)
    table_frame.pack()

    # table headings
    font="Helvetica 13 bold"
    tk.Label(table_frame, text="Player Name", font=font, anchor="w", width=20, fg="white", bg="blue").grid(row=0, column=0, sticky="ew")
    for col, key in enumerate(KEYS, 1):
        tk.Label(table_frame, text=key, font=font, width=12, fg="white", bg="blue").grid(row=0, column=col)
    tk.Label(table_frame, font=font, anchor="w", fg="white", bg="blue").grid(row=0, column=col+1, sticky="ew")

    # player statistics table
    for row, name in enumerate(stored_data, 1):
        add_player_row(table_frame, row, name)

    # add new player button
    tk.Button(root, text="Add New Player", command=lambda: new_player(table_frame)).pack(pady=5)
    # Main loop of tkinter


# main block
main_account_screen()