У вас есть несколько проблем с вашим приложением, вы можете подумать о переосмыслении структуры и управления виджетами. рассмотрите возможность чтения (http://effbot.org/tkinterbook/grid.htm) и проверьте другие сообщения в stackoverflow и убедитесь, что вы проверяете @Bryan Oakley прошлые и настоящие комментарии.
Вы используете локальные переменные, как он отметил, это легко исправить, объявив ее как глобальный следующим образом:
global variable_name
в вашем коде,
кроме того, вы можете рассмотреть вопрос о реструктуризации вашего контента ("метка"), когда вы добавляете его в корневое окно: от:
content = Label(root, text = txt.get()).grid(row = 3, column = 0)
к:
content = Label(root, text = txt.get())
content.grid(row = 3, column = 0)
, если вы не уверены в том, что происходит, рассмотреть вопрос о добавлении печати() в код, вот быстрый отрывок:
def text() :
global content
print(root.grid_slaves())
if checking :
content = Label(root, text = txt.get())
content.grid(row = 3, column = 0)
вы сразу увидите, что каждый раз, когда вы нажимаете на печать меня, виджеты добавляются в ваш макет.
лучшие практики для макета (Best way to structure a tkinter application)
Быстрой Подсказка:
def text() :
print(checking)
if checking :
content.grid_forget()
else :
content = Label(root, text = txt.get()).grid(row = 3, column = 0)
def check() :
checking = True
text()
root = Tk()
txt = StringVar()
checking = False
проверка всегда Ложная ... Вы могли бы рассмотреть переосмысление некоторой логики, а
'проверка' является локальной переменной внутри' check'. –