我使用.get()返回名为'fName'的输入框的值,然后点击按钮打印它...但它不工作

时间:2017-10-15 11:11:56

标签: python tkinter python-3.4 tkinter-entry

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() 
  

返回StringVar'fN'的值并存储它

def print_():
    print (fName_1) 
  

不打印名字输入框##

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

root.mainloop()

1 个答案:

答案 0 :(得分:2)

现在,您在启动程序后立即获取内容,从而获得空值。

单击按钮后需要获取值,这意味着您应该将获得值的代码放在方法中。

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

此外,在您的代码fName中,sName等都设置为None,因为grid()返回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())