2013-09-09 6 views
2

Я делаю базовую IDE, номера строк будут похожи на IDLE, но я не хочу связывать каждый возможный ключ с событием, которое меняет поле с помощью текущая строка/col. Есть ли какие-то события «on change» или «one move move» в Tkinter, или, более конкретно, ScrolledText. Если нет, тогда кто-то может указать мне в правильном направлении, что было бы фантастическим.Создание события при перемещении курсора в Tkinter

Спасибо!

ответ

4

Там нет ничего встроенного самих по себе, но то, что вы хотите сделать это возможно, если вы готовы, чтобы быть творческими.

В основе ядра текстовый виджет - это команда tcl, и эта команда вызывается всякий раз, когда что-то происходит с текстовым виджетами: текст вставляется, удаляется, изменяется курсор и т. Д. Характер tcl заключается в том, что мы можем заменить это команду с нашей собственной командой. И поскольку мы можем это сделать, мы можем обнаружить определенные изменения и вызвать нашу собственную функцию до или после.

Звучит сложно, и это так. С положительной стороны, он является надежным, когда вы его работаете, а это означает, что вам не нужно выполнять какие-либо пользовательские привязки. Чтобы увидеть полный рабочий пример, см. this answer на вопрос binding to cursor movement doesnt change INSERT mark.

Прокрученный текстовый виджет - это всего лишь тонкая оболочка вокруг обычного текстового виджета, поэтому этот ответ будет работать с крошечной настройкой (вам понадобится ссылка на текстовый виджет, используемый виджлетом с прокруткой). Однако оболочка настолько тонкая, что я рекомендую не использовать ее, поскольку добавление полос прокрутки в текстовый виджет тривиально.

Смежные вопросы