2

Tkinter GUI にテキスト領域があります。最後の行を削除する元に戻す機能を実装したいと考えています。そのためには、最後の行の行と列を取得する必要があります。

最後の行の行と位置を取得するにはどうすればよいですか? ポジションを取得したら、どうすればラインを削除できますか?

これをグーグルで検索しましたが、価値のあるリンクが得られません。

4

1 に答える 1

18

最後の行のインデックスは"end"または tkinter 定数ENDです。tkinter は常に最後に目に見えない改行を挿入するため、これは実際にはユーザーが入力した最後の文字の直後のインデックスを表します。

indexテキストウィジェットのメソッドを使用して、行と列の番号を取得できます。たとえば、最後の文字の行/列を取得するには、次のようにします。

pos = textwidget.index("end")

修飾子をインデックスに追加して、別の位置に対する相対位置を取得できます。たとえば、追加できる行の先頭のインデックスを取得するにはlinestart(例: "3.5 linestart" で 3.0 が返されます)。「-n chars」または「-nc」を追加して、文字を減算することもできます (例: 「3.5-1c」は 3.4 になります)。

これらの修飾子は組み合わせることができます。したがって、最後から移動したいテキストの最後の行の開始を見つけたい場合 (実際には tkinter が追加する余分な改行の後)、行の最後に到達するために 1 文字バックアップします。次に、「linestart」を使用して最初に移動します。

pos = textwidget.index("end-1c linestart")

それだけの価値があるため、これはすべて文書化されており、非常に簡単に見つけることができます。これを書いている時点で、Google で「tkinter テキスト ウィジェット」を検索したときの最初の結果は、テキスト ウィジェットのインデックス式を説明するページを指しています: http://effbot.org/tkinterbook/text.htm。「式」という名前のセクションを探します。

deleteテキスト行を削除するには、削除するテキストの開始インデックスと終了インデックスを指定してメソッドを呼び出す必要があります。最後の行を削除するには、次を使用します。

textwidget.delete("end-1c linestart", "end")
于 2013-10-20T12:30:20.583 に答える