2017-07-30 57 views
0

我想做一个简单的用户输入tkinter GUI,用户可以在其中输入基本的细节。虽然我在网上搜索,我不能征服这个问题:Python - 入口没有属性小部件

from tkinter import * 


def user(): 
    print(user_entry.widget.get()) 
    print(email_entry.widget.get()) 
    print(pass1_entry.widget.get()) 
    print(pass2_entry.widget.get()) 
    pass 

#main loop initial visual 
main_window = Tk() 
main_window.title('Register') 
main_window.geometry('250x350+200+200') 
main_window.configure(bg = 'Blue') 

wel = Label(main_window, text="""Hello, thanks for using my software. 
Please put in the details, it will be kept 
safe and sent to our database""", bg = 'white') 
wel.place(x = 0,y = 10) 


username_lab = Label(main_window, text="Username:").place(x=0, y=64) 

#us = StringVar() 
user_entry = Entry(main_window) 
user_entry.place(x=70,y=64) 
user_entry.bind("<Return>", user()) 

email_lab = Label(main_window, text="Email: ").place(x=0, y=90) 

#emi = StringVar() 
email_entry = Entry(main_window) 
email_entry.place(x=70,y=90) 
email_entry.bind("<Return>", user()) 

pass_lab = Label(main_window, text="Password:").place(x=0, y=116) 

#pas1 = StringVar() 
pass1_entry = Entry(main_window, show="*") 
pass1_entry.place(x=70,y=116) 
pass1_entry.bind("<Return>", user()) 

pass_lab = Label(main_window, text="Password repeat:").place(x=0, y=140) 

#pas2 = StringVar() 
pass2_entry = Entry(main_window, show="*") 
pass2_entry.place(x=100,y=140) 
pass2_entry.bind("<Return>", user()) 


ok = Button(main_window, text="OK", command = user(), width=8).place(x=15, y= 175) 




main_window.mainloop() 

不幸的是,我不断收到这个错误,我想不通为什么。请帮助至少一件事(即用户名),其余的将遵循类似的规则。 :

Traceback (most recent call last): 
    File "C:/Users/Milosz/Desktop/Programming/Register/main.py", line 28, in <module> 
    user_entry.bind("<Return>", user()) 
    File "C:/Users/Milosz/Desktop/Programming/Register/main.py", line 5, in user 
    print(user_entry.widget.get()) 
AttributeError: 'Entry' object has no attribute 'widget' 
+2

你为什么认为'user_entry'具有'widget'属性?你期望这个属性与'user_entry'对象本身有什么不同? –

+0

我不太确定。那么,如何编写代码以便在SHELL上打印输入?谢谢。 –

回答

0

当你需要在你需要在这种情况下,只有使用它的变量名的输入字段使用get()widget()没有做你认为它在这里做什么,也不需要。

在您的user():类中替换所有的打印语句。

来源:

def user(): 
    print(user_entry.widget.get()) 
    print(email_entry.widget.get()) 
    print(pass1_entry.widget.get()) 
    print(pass2_entry.widget.get()) 
    pass 

要:

def user(): 
    print(user_entry.get()) 
    print(email_entry.get()) 
    print(pass1_entry.get()) 
    print(pass2_entry.get()) 
    # removed pass as it is not needed and does nothing here. 

这应该打印内容到控制台。

相关问题