pygtk覚え書き gtk.TextViewで指定行へ移動する。


gtk.TextViewで行番号を指定して、その行へカーソルを移動させるには、以下のようにします。

# txtViewというgtk.TextViewがあったとして

bf = txtView.get_buffer()
lineIter = bf.get_iter_at_line(lineNo)
if lineIter:
    bf.place_cursor(lineIter)
    txtView.scroll_to_iter(lineIter, 0.2)

上記のソースコード中のlineNoはイテレータを取得する行番号(ゼロオリジン)を指定します。
また、scroll_to_iter()の第2引数に0.2を指定していますが、スクロールした表示位置がgtk.TextView高さ方向のどのあたりにくるかを指定しているだけなので、好みでいいと思います。


なんだか、久しぶりにpygtkの日記を書いた気がします(笑

上記のカーソル移動は、現在制作中のテキストエディタでも使用しました。
使用箇所は、検索結果の一覧がダブルクリックされ時、該当するテキストの行へ移動する処理です。