2

Gedit のプラグインを開発しています。

import gedit

class ReloadOnSave(gedit.Plugin):

    def __init__(self):
        gedit.Plugin.__init__(self)

    def activate(self, window):
        for view in window.get_views():
            self.connect_handlers(view)

    def connect_handlers(self, view):
        print 'Reached here' // This doesnt happen on Gedit startup.

何が起こるかというと、(任意の数のタブを開いた状態で) gedit を開くと、「ここに到達しました」が表示されません。しかし、プラグイン メニューに移動し、プラグインを無効にして再度有効にすると、「ここに到達しました」と出力されます (開いているタブの数だけ)

「保存された」イベントハンドラーを使用する必要があるため、get_views() も必要です。(最終的には、ドキュメントが保存されたときに何かをしようとしています)

では、gedit を最初に開いたときに window.get_views() がビューを返さないのはなぜですか? (そして、プラグインを無効にして再度有効にした場合にのみそうしています)

また、'print window.get_views()' を実行すると、同じことが起こります。空のリストが出力されますが、プラグインを無効/再度有効にすると、すべてのビューのリストが表示されます。

4

1 に答える 1

4

これは、プラグインが有効化された時点では、まだタブがないために発生します。プラグインの有効化後にタブが作成されます。これを修正するには、"tab-added"および信号をリッスンすることをお勧めします。"tab-removed"

于 2010-11-12T14:32:09.480 に答える