2017-10-15 4 views
0
from tkinter import * 

root = Tk() 

fN = StringVar() 
sN = StringVar() 
age = StringVar() 
yG = StringVar() 

Label(root, text="First Name").grid(row=0, sticky=W, padx=4) 
fName = Entry(root, width=50, textvariable=fN).grid(row=0, column=1, sticky=E, pady=4) 

Label(root, text="Surname").grid(row=1, sticky=W, padx=4) 
sName = Entry(root, width=50, textvariable=sN).grid(row=1, column=1, sticky=E, pady=4) 

Label(root, text="Age").grid(row=2, sticky=W, padx=4) 
age = Entry(root, width=50, textvariable=age).grid(row=2, column=1, sticky=E, pady=4) 

Label(root, text="Year Group").grid(row=3, sticky=W, padx=4) 
yearGruop = Entry(root, width=50, textvariable=yG).grid(row=3, column=1, sticky=E, pady=4) 

fName_1 = fN.get() 

を動作していないためにfNの」とそれにイム()「fNameを」という名前の入力ボックスの値を返すと、ボタンのクリックで、それを印刷...しかし、その「STRINGVARの値を返す

def print_(): 
    print (fName_1) 

を格納する第1の名前の入力ボックス##

Button(root, text="Create account", command=print_).grid(row=4, column=1) 

root.mainloop() 
の内容を印刷しません

答えて

2

今すぐプログラムを開始するとすぐに内容が表示されるため、空の値が得られます。

ボタンをクリックした後に値を取得する必要があります。これは、メソッド内に価値のあるコードを挿入する必要があることを意味します。

def print_(): 
    fName_1 = fN.get() 
    print (fName_1) 

また、など、あなたのコードfNamesName内のすべてのNonegrid()以来の戻りNoneに設定されています。後でそれらを使用する場合は、別の行にグリッドを使用する必要があります。

fName = Entry(root, width=50, textvariable=fN) 
fName.grid(row=0, column=1, sticky=E, pady=4) 

もう1つのポイントは、コード内にstringvar値が必要ないということです。 getを使ってEntryの内容を直接取得することができます。

fName = Entry(root, width=50, textvariable=fN) 
fName.grid(row=0, column=1, sticky=E, pady=4) 

def print_(): 
    print (fName.get()) 
関連する問題