Как мне отменить выбор поля ввода текста / обновить его, чтобы оно было доступно только для чтения при нажатии enter?

#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 ()»), и это работает как мечта. Спасибо