Я пытаюсь улучшить виджет Tkinter Text
и предоставить дополнительные возможности.Как получить виджет Tkinter?
Одной из ключевых особенностей моего нового виджета является взломать стрелки/нажатия клавиш клавиатуры (подсветка синтаксиса, автоматическое заполнение контекстных меню).
Я попытался применить метод Key и Up/Down к методам прямого подхода, но этот подход не удался, поскольку обработчики методов были выполнены до обработчиков событий Text, поэтому мои методы были выполнены до последнего нажатия клавиши, обрабатываемого самим текстом ,
class Editor(Frame):
def __init__(self, parent, *args, **kwargs):
Frame.__init__(self, parent) # initialize the base class
# The Main Text Widget
self.text = scrolledtext.ScrolledText(self, *args, **kwargs)
self.text.pack(side='left', fill='both', expand=1)
self.text.bind("<Key>", lambda event: self.editor_key_handler())
self.text.bind("<Up>", lambda event:self.editor_arrow_key_handler('Up'))
self.text.bind("<Down>", lambda event: self.editor_arrow_key_handler('Down'))
Затем я попытался изменить порядок bindtag и сделать обработчик класса запустить первый, то мои обработчики экземпляра - это действительно исправили оригинальный вопрос:
bindtag = list()
bindtag.append(self.text.bindtags()[1])
bindtag.append(self.text.bindtags()[0])
bindtag.append(self.text.bindtags()[2])
bindtag.append(self.text.bindtags()[3])
self.text.bindtags(bindtag)
Но теперь, как мои обработчики выполнялись после того, как Text ... мои обработчики Up/Down были запущены после того, как курсор вставки уже перемещен внутри Text, потеряв исходную позицию, где пользователь нажал стрелки вверх/вниз.
Будучи опытным Perl Tk программист, я переехал вместе, чтобы попытаться вывести текстовый виджет Tkinter, чтобы позволить мне угон/вниз обработчик по умолчанию Up и предоставить свои собственные индивидуальные методы ..
я не нашел способ просто вывести и переопределить виджет «Текст» (что-то кажется тривиальным для системы ООП.)
Как это можно сделать?
Возможно, вам нужно '' –
furas
@furas: это вызывает раздражающую задержку между нажатиями клавиш и обработчиком (подсветка синтаксиса), а также не поддерживает удерживание клавиши (повторное нажатие клавиши на окнах10) – NirMH