Я включаю виджет прокручиваемого текстового поля в моем главном окне Tk, которое я настроил для перехвата любых нажатий клавиш следующим образом:
use Tk;
use Tk::ROText; # read-only version of Text widget
$mw = new Tk::MainWindow;
$textBox = $mw->Scrolled('ROText', -scrollbars =>'e')->grid();
$mw->bind('<Any-KeyPress>' => \&key_handler);
#Attempts to disable key bindings of text widget
#$textBox->bind('<Any-KeyPress>' => sub {});
#$textBox->bindtags(undef);
Tk::MainLoop;
sub key_handler {
$count++;
$textBox->insert('end', "key press #$count\n");
}
Виджет Текст имеет связку клавиш по умолчанию,среди них перемещение курсора с помощью клавиш со стрелками.Я хочу отключить это поведение, так как хочу выполнить некоторые другие действия на основе клавиш со стрелками.
Я пробовал $textBox->bind('Any-KeyPress' => sub {});
и $textBox->bindtags(undef);
на основе предложенных решений, которые я нашел в Интернете, но ни один из них не отключил бы курсордвижение внутри текстового поля.Я по-прежнему получаю нежелательное движение курсора в дополнение к требуемым key_handler
вызовам.
Есть ли другие предложения относительно того, как можно отключить привязки клавиатуры виджета Текст?