テキスト ウィジェットでの選択は、選択した文字sel
範囲のタグを設定することによって処理されます。このタグは次のように削除できます。
.t tag remove sel 1.0 end
テキスト ウィジェットのパス名を.t
. 1.0
これは、最初の文字 ( ) から最後の文字の次の文字位置( ) までのすべての文字についてend
、タグsel
を削除することを指定します。
注: 通常、タグを削除するときは、テキスト内の複数の範囲に割り当てられている可能性に対処する必要があります。上記のタグ削除呼び出しは、テキスト全体からタグをクリアします。これは、(通常は) 選択範囲が 1 つしかないはずなので、選択タグには問題ありません。タグを持つ複数の範囲があり、foo
そのうちの 1 つだけをクリアしたい場合は、最初にその範囲の開始インデックスと終了インデックスを見つけ、( を呼び出してtag remove
) それらの間のタグのみをクリアする必要があります。
sel
注 2: これはすべて、目に見える効果がタグの設定によって実際に引き起こされることを前提としています。Tk では、このタグを設定するボタン 2 の標準バインディングではありません。Perl-Tk の非標準バインディングが、タグと同じ方法で視覚的に表示される他のタグを設定している可能性がありますsel
。さらに調査するには、次のコマンドが役立つ場合があります。
.t tag names $placeWhereIRightClicked
(ここでも、テキスト ウィジェットのパス名がであり、右クリックが発生した場所のインデックス.t
を保持していると仮定します) は、そのインデックスでアクティブなすべてのタグを示します。placeWhereIRightClicked
(コマンド
.t tag names
テキスト全体のタグがリストされます。)
TkDocs には、コマンドが言及されているテキスト ウィジェットに関する記事がありますが、Perl-Tk でそれを行う方法は示されていません。tag remove
テキスト ウィジェットの CPAN ドキュメントによると、コマンドの構文は次のとおりです。
$text->tagRemove(tagName, index1, ?index2, index1, index2, ...?)
だから私は思う
$text->tagRemove('sel', '1.0', 'end')
またはそのような方法がそれを行う方法です(Perlがないため、テストできません)。
(注: コメントで言及されている 'Hoodiecrow' は私です。以前にそのニックネームを使用しました。)