Выбор в текстовом виджетах осуществляется путем установки тега sel
для выбранного диапазона символов. Этот тег может быть удален, как это:
.t tag remove sel 1.0 end
предполагая имя пути вашего текстового виджета .t
. Это указывает, что для всех символов от первого (1.0
) до позиции символа после последнего символа (end
) тег sel
должен быть удален.
Примечание: обычно при удалении тега необходимо иметь дело с возможностью присвоения ему нескольких диапазонов текста. Вызов удаления тега выше очищает тег от всего текста, и это отлично подходит для тега выбора, поскольку вы (обычно) должны иметь только один выбранный диапазон. Если есть несколько диапазонов, у которых есть тег foo
, и вы хотите удалить только один из них, сначала вам нужно найти начальные и конечные индексы этого диапазона и очистить (вызывая tag remove
) тег только между ними.
Примечание 2: Все это предполагает, что видимый эффект фактически вызван установкой тега sel
. В Tk это не стандартная привязка для кнопки 2, чтобы установить этот тег: может быть, что некоторая нестандартная привязка в Perl-Tk устанавливает другой тег, который визуально отображается так же, как тег sel
. Для дальнейшего исследования, эта команда может быть полезна:
.t tag names $placeWhereIRightClicked
(снова предполагая, что путь к файлу вашего текстового виджета .t
, и что placeWhereIRightClicked
имеет индекс места, где произошла правая кнопка мыши) расскажет вам все тег активны в этом индексе.
(Команда
.t tag names
перечислит теги для всего текста.)
У TkDocs есть статья about the text widget, где указана команда tag remove
, но как это сделать в Perl-Tk не отображается.
документация CPAN для текстового виджета говорит, что синтаксис для команды является
$text->tagRemove(tagName, index1, ?index2, index1, index2, ...?)
поэтому я полагаю
$text->tagRemove('sel', '1.0', 'end')
или что-то подобное, что есть способ сделать это (без Perl, не может проверить).
(Примечание: «Hoodiecrow» упоминается в комментариях, я, я использовал это ник раньше.)
Вы должны показать код, как отключить всплывающее меню. Пожалуйста, сделайте код как можно короче, разделив несвязанные вещи. –
Добавьте к этому код, который вы используете для удаления тега '' sel'', и код, который активирует удаление тега. Опять же, как можно меньше кода. –
@Hoodiecrow Я добавил код. Я серьезно надеюсь, что совершил ошибку. –