2017-07-30 13 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() 

、私はこのエラーを取得しておくと、私は理由を把握することはできません。少なくとも1つのもの(例:ユーザー名)については助けてください。残りは同様のルールに従います。 :あなたが入力フィールドにget()を使用する必要がある場合は

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

あなただけの、この場合には、変数名の上にそれを使用する必要があります。 widget()はあなたがここでやっていると思っていることを実行しておらず、必要でもありません。

user():クラスでは、printステートメントをすべて置き換えてください。

から:

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. 

これは、コンソールに内容を印刷する必要があります。

関連する問題