Ваши проблемы начинаются с этой строки:
host1 = Label(frame,text="Host: ").grid(row=0,column=0)
То, что вы делаете, - это создание метки, использование сетки для размещения метки на экране, а затем присвоение host1
результатаgrid () команда , которая является пустой строкой.Это делает невозможным последующее обращение к host1
для получения ссылки на метку.
Вместо этого вам необходимо сохранить ссылку на метку.С помощью этой ссылки вы позже сможете изменить все, что захотите в метке:
host1 = Label(frame, text="Host: ")
host1.grid(row=0, column=0)
...
if (something_has_changed):
host1.configure(text="Hello, world!")
Возьмите это у кого-то с более чем десятилетним опытом работы с tk, лучше разделить создание виджета и макет.Ваш макет почти наверняка изменится в процессе разработки, и это гораздо проще сделать, когда весь код макета находится в одном месте.Мои макеты могут сильно изменяться, но мой рабочий набор виджетов редко меняется, поэтому мне приходится только менять один блок кода, а не десятки отдельных строк, чередующихся с другим кодом.
Например, мой код обычно выглядит примерно так:
labell = tk.Label(...)
label2 = tk.Label(...)
entry1 = tk.Entry(...)
label1.grid(...)
label2.grid(...)
entry1.grid(...)
Конечно, я использую гораздо лучшие имена переменных.