繁体   English   中英

我不知道如何解决这个错误:TypeError: authenticate_name() missing 1 required positional argument: 'eUsername'

[英]I dont know how to fix this error: TypeError: authenticate_name() missing 1 required positional argument: 'eUsername'

这是我的整个代码:

import tkinter as tk
from tkinter import *
import turtle
file = open("usernames.txt", "r+")
file2 = open("passwords.txt", "r+")

def mainScreen():
    mainScreen = Tk()
    mainScreen.geometry("250x175")
    mainScreen.title("Login Screen")
    Label(text = "Please select an option.").pack()
    Label(text = "").pack()
    Button(text = "Login into an existing account.", command = login).pack()
    Label(text = "").pack()
    Button(text = "Create a new account.").pack()
    mainScreen.mainloop()


def login():
    loginScreen = Tk()
    loginScreen.geometry("200x150")
    loginScreen.title("Existing Account Login")
    Label(loginScreen,text = "Please enter your username.").pack()
    eUserName = StringVar()
    userEntry = Entry(loginScreen, textvariable = eUserName)
    userEntry.pack()
    eUserName = userEntry.get()
    Label(loginScreen,text = "Please enter your pasword.").pack()
    ePassWord = StringVar()
    passEntry = Entry(loginScreen, textvariable = ePassWord)
    passEntry.pack()
    ePassWord = passEntry.get()
    Label(text="").pack()
    Button(loginScreen, text = "Click to login.", command = authenticate_name).pack()
    return ePassWord, eUserName

def authenticate_name(eUsername):    
    usernames = []
    validCheck = False
    for line in file:
        usernames.append(line)
    for eUserName in usernames:
        if eUserName in usernames:
            validCheck = True
            pass
        else:
            tkMessageBox.showerror("Invalid Username!", "This usernames is invalid!")
            exit()

def authenticate_password():
    passwords = []
    for line in file2:
        passwords.append(line)
    for count in range(len(passwords)):
        count += 1
        if ePassWord in passwords:
            game()
        else:
            tkMessageBox.showerror("Invalid Password!", "This password is incorrect!")


mainScreen()

我得到的错误如下:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Vlad\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
TypeError: authenticate_name() missing 1 required positional argument: 'eUsername'

我不知道如何解决这个问题。 我试过在eUsername上做一个str()函数,但没有看到工作。 任何帮助将不胜感激!

您错误地使用了(Python 3)tkinter 的许多功能,包括StringVarmessagebox 、顶级窗口等。 通过使您的StringVar变量成为全局变量,并重新设计您的逻辑,我得出了与您的近似值'正在尝试实施:

from tkinter import *
from tkinter import messagebox

def mainScreen():
    Label(text="Please select an option.").pack()
    Label(text="").pack()
    Button(text="Login into an existing account.", command=login).pack()
    Label(text="").pack()
    Button(text="Create a new account.").pack()

def login():
    loginScreen = Toplevel(root)
    loginScreen.geometry("200x150")
    loginScreen.title("Existing Account Login")
    Label(loginScreen, text="Please enter your username.").pack()
    Entry(loginScreen, textvariable=eUserName).pack()

    Label(loginScreen, text="Please enter your password.").pack()
    Entry(loginScreen, textvariable=ePassWord).pack()
    Label(text="").pack()
    Button(loginScreen, text="Click to login.", command=authenticate_name).pack()

def authenticate_name():
    with open("usernames.txt") as file:

        for username in file:
            if eUserName.get() == username.strip():
                authenticate_password()
                return

        messagebox.showerror("Invalid Username!", "This username is invalid!")
        exit()

def authenticate_password():
    with open("passwords.txt") as file:

        for password in file:

            if ePassWord.get() == password.strip():
                game()
                return

        messagebox.showerror("Invalid Password!", "This password is incorrect!")
        exit()

def game():
    messagebox.showinfo("You're In!", "The game has begun!")

root = Tk()
root.geometry("250x175")
root.title("Login Screen")

eUserName = StringVar()
ePassWord = StringVar()

mainScreen()

root.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM