2

私の問題:私が書いているTkinterエディターでは、ファイルをリロードして、書いている時点で再度開く必要がある場合があります。

私の最初のリロード試行はこれです

pos=config.text.index(INSERT)          # memorize where I am
...                                    # do stuff
textopen_and_display(currentfn)        # reopen it
text.mark_set(INSERT,pos)          # go 
text.see(INSERT)                   # there

textは私のテキストウィジェットです。問題は、この方法で呼び出された .see() メソッドが私が望むことをしないことです: INSERT を表示するのに十分なだけ下にスクロールして停止します。ファイルの先頭が表示されている最初の行にいない場合、機能しません。

必要なのは、テキストウィジェットの最後の表示行のインデックスです:どうすれば見つけられますか? このインデックスで .see() を使用すると、思いどおりに動作するはずです

PS私はそれを小さなサイズ(height = 5)として定義し、fill = BOTH、expand = 1でパックしたため、実行時にテキストウィジェットの高さを見つけることさえできません。初期値 5

4

1 に答える 1

2

スクロール位置を保存するには:

x_pos = text.xview()[0]
y_pos = text.yview()[0] 

スクロール位置を復元するには:

text.xview(Tkinter.MOVETO, x_pos)
text.yview(Tkinter.MOVETO, y_pos)
于 2012-05-23T16:17:34.257 に答える