メイン表示ウィンドウの横に行番号を表示する PyGTK を使用してテキスト ビューアー ウィジェットを作成しようとしています。もちろん、行番号とメイン ウィンドウが同期してスクロールするようにします。ただし、これを機能させる方法がわかりません。今、私はこれをやっています。TextViewer は HBox のサブクラスで、2 つの TextView を作成し、属性名 linenums および mainview の下にそれらをパックします。
self.textviewer = TextViewer.TextViewer(self.toplevel)
sw = gtk.ScrolledWindow()
sw.set_vadjustment(self.textviewer.mainview.get_vadjustment())
sw.set_hadjustment(self.textviewer.mainview.get_hadjustment())
sw.add_with_viewport(self.textviewer)
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
2 つの set_Xadjustment 行を削除すると、埋め込まれた TextViews の scroll_to_mark 関数が機能せず、これは私のアプリケーションでは受け入れられません。それらを使用すると、メイン テキスト ウィンドウは行番号ウィンドウの 2 倍の速さでスクロールし、ScrolledWindow の調整を self.textviewer.linenums の調整に設定すると、その逆になります。これはバグであると強く疑っています。また、自分でビューポートを設定し、その調整を TextViews の 1 つに設定しようとしましたが、やはり scroll_to_mark 関数が機能しなくなりました。両方の TextView を同期して 1 つとしてスクロールし、一方のスクロールの変更が他方に等しく影響するようにするにはどうすればよいですか?
編集: これは、ウィジェットを設定するメイン アプリケーションのコードです。
self.textviewer = TextViewer.TextViewer(self.toplevel)
sw = gtk.ScrolledWindow()
#These are the lines that toggle between the two problems when (un)commented
sw.set_vadjustment(self.textviewer.mainview.get_vadjustment())
sw.set_hadjustment(self.textviewer.mainview.get_hadjustment())
sw.add_with_viewport(self.textviewer)
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)