2017-10-15 7 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 '의 값을 반환

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

root.mainloop() 
의 내용을 인쇄하지
def print_(): 
    print (fName_1) 

기억

답변

2

지금 바로 프로그램을 시작하자마자 내용을 가져오고 있으므로 값이 비어 있습니다.

버튼을 클릭 한 후에 값을 가져와야합니다. 즉, 메소드 내부에 가치가있는 코드를 삽입해야합니다.

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

또한, 등 코드 fName, sName의 모든 Nonegrid() 이후 수익률 None으로 설정됩니다. 나중에 사용하려면 별도의 줄에 눈금을 사용해야합니다.

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

또 다른 요점은 코드에 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())