Tkinter: как разрешить выбор столбца в текстовом виджете? - PullRequest
0 голосов
/ 07 февраля 2012

Есть ли возможность переопределить стандартное поведение «перетаскивать для выбора» в текстовом виджете Tkinter, чтобы разрешить выбор столбцов? Я бы хотел, чтобы пользователь указывал мышью, нажимал левую кнопку и двигался, удерживая левую кнопку, для выбора в режиме столбца. Выбор поведения по умолчанию ориентирован на линию. Я хотел бы что-то вроде режима столбца vim.

Спасибо, L-

1 Ответ

1 голос
/ 08 февраля 2012

Да, есть способ, хотя он потребует определенной работы.Основная идея заключается в привязке к <ButtonPress-1>, <B1-Motion> и <ButtonRelease-1>.В этих привязках вы должны будете отслеживать, где был курсор, когда он был нажат, и где он находится, когда его перетаскивают.Затем вам нужно будет вычислить, какие символы находятся в этом ограничивающем прямоугольнике, и добавить тег sel к этим символам по отдельности.

Это должно быть довольно простым, если вы используете шрифт фиксированной ширины с включенным переносомвыкл.Если шрифт переменной ширины и / или разрешить перенос, проблема станет намного сложнее.В конечном счете, все сводится к небольшой математике, пока пользователь тащит мышь.

Для вдохновения вы можете увидеть, как кто-то сделал это в tcl / tk на странице выбора блока в вики tcler .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...