#python-3.x #tkinter #text #widget
#python-3.x #tkinter #текст #виджет
Вопрос:
Недавно я работал над каким-то простым пользовательским интерфейсом, и это сбило меня с толку. Я проверил несколько разных потоков stackoverflow в полях ввода, а также другую документацию и видеоурок, но ничего не нашел по этому вопросу.
У меня есть текстовое поле как часть пользовательского интерфейса. Предполагается, что пользователь должен выбрать его, ввести имя и нажать enter, после чего я буду использовать функцию .get() для получения имени. Тем не менее, я также хотел бы удалить курсор / перевести его в режим только для чтения.
Вот тут-то и возникает проблема. Если я root.привяжу клавишу ввода к .configure (состояние =»только для чтения») или состояние =»отключено», он не будет ждать, пока не будет нажата клавиша ввода, чтобы отключить или сделать поле ввода доступным только для чтения
Кто-нибудь знает, как я мог бы заставить это работать или почему это не работает?
Ответ №1:
Я думаю, вам нужно установить значение NAME_OF_ENTRY_WIDGET.bind('<Return>', FUNCTION_NAME_HERE)
для функции, затем в функции установите состояние виджета ввода на отключенное
def FUNCTION_NAME_HERE():
TEXT = NAME_OF_ENTRY_WIDGET.get()
....
NAME_OF_ENTRY_WIDGET['state'] = DISABLED
return TEXT
Возможно, вам придется передать виджет в качестве аргумента функции
Комментарии:
1. Вы, сэр, легенда. Я включил это в свой код и внес одно небольшое редактирование (заменил только имя функции на «lambda e: function_name ()»), и это работает как мечта. Спасибо