я использую .get(), чтобы вернуть значение поля ввода с именем «fName», а затем распечатать его одним нажатием кнопки, но оно не работает

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

person Ethan2001    schedule 15.10.2017    source источник


Ответы (1)


Прямо сейчас вы получаете содержимое, как только запускаете программу, поэтому вы получаете пустое значение.

Вам нужно получить значение после нажатия кнопки, что означает, что вы должны поместить код, который получает значение, внутри вашего метода.

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 в вашем коде. Вы можете напрямую получить содержимое Entry, используя get.

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

def print_():
    print (fName.get()) 
person Lafexlos    schedule 15.10.2017