属性错误:“窗口”没有对象“ nameE”

时间:2018-08-27 16:36:11

标签: python python-3.x class tkinter tkinter-entry

有人可以解释AttributeError: 'Window' object has no attribute 'nameE'的含义。在过去的一个小时中,我一直在修改我的代码,以寻求解决方案,但未成功。我认为这与“窗口”类有关,但是我不确定它是什么。如果有人可以快速浏览代码以查看他们是否可以找到错误的原因,我将不胜感激。谢谢。

这是我的代码:

from tkinter import *


class Window:
    def __init__(self, master):
        self.master = master
        root.title("Sign Up or Login")
        root.minsize(width=300, height=300)
        root.maxsize(width=300,height=300)

        self.login_button = Button(master, text = "Login", width=18,height=4, command=self.LoginPage)
        self.signup_button = Button(master, text = "Sign Up", width=18,height=4, command=self.SignupPage)

        self.login_button.place(relx=0.5, rely=0.3, anchor=CENTER)
        self.signup_button.place(relx=0.5, rely=0.7, anchor=CENTER)

    def LoginPage(self):

        root.title("Login")
        self.login_button.place_forget()
        self.signup_button.place_forget()

        self.text_username = Label(root, text = "Username : ")
        self.text_password = Label(root, text = "Password : ")

        self.usernameE = Entry(root)
        self.passwordE = Entry(root)

        self.text_username.place(relx=0.3, rely= 0.4, anchor=CENTER)
        self.text_password.place(relx=0.3, rely= 0.6, anchor=CENTER)

        self.usernameE.place(relx=0.65,rely= 0.4, anchor=CENTER)
        self.passwordE.place(relx=0.65,rely= 0.6, anchor=CENTER)

        self.submit_button_login = Button(root, text="Submit", command=self.SubmitInfo)
        self.submit_button_login.place(relx=0.7,rely=0.7)



    def SignupPage(self):

        root.title("Sign Up")
        self.login_button.place_forget()
        self.signup_button.place_forget()

        self.text_name = Label(root, text = "Name :")
        self.text_age = Label(root, text = "Age :")
        self.text_username = Label(root, text = "Username :")
        self.text_password = Label(root, text = "Password :")

        self.text_name.place(relx=0.2, rely=0.2, anchor=CENTER)
        self.text_age.place(relx=0.2,rely=0.4, anchor=CENTER)
        self.text_username.place(relx=0.2,rely=0.6,anchor=CENTER)
        self.text_password.place(relx=0.2,rely=0.8,anchor=CENTER)

        self.nameE = Entry(root)
        self.ageE = Entry(root)
        self.usernameE2 = Entry(root)
        self.passwordE2 = Entry(root)

        self.nameE.place(relx= 0.4, rely=0.2)
        self.ageE.place(relx=0.4,rely=0.4)
        self.usernameE2.place(relx=0.4,rely=0.6)
        self.passwordE2.place(relx=0.4,rely=0.8)

        self.submit_button_signup = Button(root, text="Submit", command=self.SubmitInfo)
        self.submit_button_signup.place(relx= 0.7, rely=0.9)

    def SubmitInfo(self):

        self.username_login = self.usernameE.get()
        self.password_login = self.passwordE.get()
        self.name_signup = self.nameE.get()
        self.age_signup = self.ageE.get()
        self.username_signup = self.usernameE2.get()
        self.password_signup = self.passwordE2.get()
        print(self.username_login)


root = Tk()

run = Window(root)

root.mainloop()

1 个答案:

答案 0 :(得分:0)

您使用的是相同的SubmitInfo函数,该函数调用所有条目,但是通过选择SignupPageLoginPage

只能创建某些条目。

在创建类时声明它们是一种解决方法:

from tkinter import *

class Window:
    def __init__(self, master):
        self.master = master
        root.title("Sign Up or Login")
        root.minsize(width=300, height=300)
        root.maxsize(width=300,height=300)

        self.login_button = Button(master, text = "Login", width=18,height=4, command=self.LoginPage)
        self.signup_button = Button(master, text = "Sign Up", width=18,height=4, command=self.SignupPage)

        self.login_button.place(relx=0.5, rely=0.3, anchor=CENTER)
        self.signup_button.place(relx=0.5, rely=0.7, anchor=CENTER)

        self.usernameE = Entry(root)
        self.passwordE = Entry(root)

        self.nameE = Entry(root)
        self.ageE = Entry(root)
        self.usernameE2 = Entry(root)
        self.passwordE2 = Entry(root)

    def LoginPage(self):

        root.title("Login")
        self.login_button.place_forget()
        self.signup_button.place_forget()

        self.text_username = Label(root, text = "Username : ")
        self.text_password = Label(root, text = "Password : ")

        self.text_username.place(relx=0.3, rely= 0.4, anchor=CENTER)
        self.text_password.place(relx=0.3, rely= 0.6, anchor=CENTER)

        self.usernameE.place(relx=0.65,rely= 0.4, anchor=CENTER)
        self.passwordE.place(relx=0.65,rely= 0.6, anchor=CENTER)

        self.submit_button_login = Button(root, text="Submit", command=self.SubmitInfo)
        self.submit_button_login.place(relx=0.7,rely=0.7)

    def SignupPage(self):

        root.title("Sign Up")
        self.login_button.place_forget()
        self.signup_button.place_forget()

        self.text_name = Label(root, text = "Name :")
        self.text_age = Label(root, text = "Age :")
        self.text_username = Label(root, text = "Username :")
        self.text_password = Label(root, text = "Password :")

        self.text_name.place(relx=0.2, rely=0.2, anchor=CENTER)
        self.text_age.place(relx=0.2,rely=0.4, anchor=CENTER)
        self.text_username.place(relx=0.2,rely=0.6,anchor=CENTER)
        self.text_password.place(relx=0.2,rely=0.8,anchor=CENTER)

        self.nameE.place(relx= 0.4, rely=0.2)
        self.ageE.place(relx=0.4,rely=0.4)
        self.usernameE2.place(relx=0.4,rely=0.6)
        self.passwordE2.place(relx=0.4,rely=0.8)

        self.submit_button_signup = Button(root, text="Submit", command=self.SubmitInfo)
        self.submit_button_signup.place(relx= 0.7, rely=0.9)

    def SubmitInfo(self):

        self.username_login = self.usernameE.get()
        self.password_login = self.passwordE.get()
        self.name_signup = self.nameE.get()
        self.age_signup = self.ageE.get()
        self.username_signup = self.usernameE2.get()
        self.password_signup = self.passwordE2.get()
        print(self.username_login)


root = Tk()

run = Window(root)

root.mainloop()
相关问题