Объявите имя как глобальное для доступа к нему вне функции ready ():
1) Инициализируйте name = '' перед def ready ()
2) Добавьте глобальное имя в качестве первой строки в ready ()
3) Добавить новую кнопку «Получить имя»
4) Добавить новую метку под кнопкой «Получить имя», чтобы отобразить глобальную переменную имени после нажатия кнопки «Получить имя»
5) Добавьте функцию get_name (), которая использует глобальное имя для настройки новой метки с последним значением, сохраненным функцией ready ().
Это не красиво, но этот рабочий код демонстрирует, как использовать имя вне готовой функции благодаря глобальной. Проверьте это, отредактировав значение записи, нажав кнопку «Далее», а затем кнопку «Получить имя». Клики Get Name изменят метку непосредственно под ней, чтобы отразить последнее значение, сохраненное в глобальном имени функцией ready ().
Если вы отредактируете значение записи и нажмете кнопку «Получить имя», оно не будет отображать новое значение (оно будет продолжать показывать предыдущее значение) в новой метке, пока вы не нажмете кнопку «Далее», потому что именно там происходит глобальное изменение. Имя переменной изменено. Я думаю, что это поведение, которое вы хотите:
Вот полный рабочий код:
from tkinter import *
root = Tk()
e_name = Entry(root, width=50)
e_name.pack()
name = ''
def ready():
global name
name = e_name.get()
test = Label(root, text= name) #and this works >>> test = Label(root, text= e_name.get())
test.pack()
def get_name():
global name
test2.configure(text= name)
ready_button = Button(root, text="Next", command=ready)
ready_button.pack()
name_button = Button(root, text="Get Name", command=get_name)
name_button.pack()
test2 = Label(root)
test2.pack()
root.mainloop()