Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Ethan2001Ответов: 1
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()

pythontkintertkinter-entry

Ответы

Ответ 1 · рейтинг 2 · Lafexlos

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы