0

TkinterIDLE のエントリと同様のことを行うために Text ウィジェットを設定するにはどうすればよいですか? 例えば:

>>> Entry goes here!

ただし、各行の先頭に挿入する方法は知っていますが、削除できないようにするにはどうすればよい>>>ですか? これについてグーグルで検索しましたが、役に立ちませんでした。

4

1 に答える 1

1

解決策が「Good Enough」だけであれば、私が使用するテクニックは次のとおりです。

  1. プロンプトを挿入するときは、プロンプトの末尾のインデックスを覚えておいてください。
  2. 関心のあるイベントのウィジェットにバインディングを追加します (例: <BackSpace>and <Delete>and <<Cut>>)
  3. このバインディングでは、挿入カーソルと選択のインデックスを確認できます。保存されたインデックスより前にある場合は、イベントを無視します (つまり、 do a return "break")。

プロンプトの前に文字を挿入することはできますが、これは多かれ少なかれ問題なく動作するはずです。テキスト ウィジェットを変更するすべてのバインディングを書き直すのはかなり骨の折れる作業ですが、削除を追跡するだけならそれほど難しくありません。

この問題を完全に解決するには、実際のウィジェットの低レベルの挿入および削除コマンドをインターセプトするための小さな tcl コードを記述する必要があります。可能ですが、基礎となる Tcl コードを十分に理解している必要があります。例については、 https ://stackoverflow.com/a/11180132/7432 の回答を参照してください。

于 2012-06-24T17:28:46.630 に答える