PyGTKを使用してPythonでgeditプラグインを作成する際に問題があります。Python Geditプラグイン、GTK、ツリーストアフィルタランタイム再帰エラー
プラグインの基本的な仕事は、テキストエントリに入力されたテキストを基にしたツリーストアをフィルタリングすることです。検索は、ツリーフィルターの)メソッド.refilter(によって処理される「ライブ」の検索、つまり、押す一切のボタンがない、検索がイベントで行われる「key_release_event」です:
widget.connect('key_release_event', self.on_type_search_box_mask)
その側で
、ツリーは機能によってフィルタリングされています
treeFilter.set_visible_func(self.search_in_reference, None)
今すぐ木はかなり大きさであることに注意してください、私は10-20(行の1-2数千人が、ちょうど1レベルとわずか数の行を持っています)は1レベルの子を持つため、最大深度は2です。
私は非常に速く入力しても、何かをタイプしてツリーをフィルタリングすると、すべてがうまく動作するので、refilter()が同じ瞬間に2回呼び出されます。
は、今の問題は...私は(バックスペースを持つか、デルボタン付き)テキスト入力中のテキストを削除した場合、私は、Pythonで次のエラーが表示され、多くの時間を繰り返した:
Exception RuntimeError: 'maximum recursion depth exceeded while calling a Python object' in <type 'exceptions.RuntimeError'> ignored
Exception RuntimeError: 'maximum recursion depth exceeded while calling a Python object' in <type 'exceptions.RuntimeError'> ignored
Error in sys.excepthook:
RuntimeError: maximum recursion depth exceeded
Original exception was:
RuntimeError: maximum recursion depth exceeded while calling a Python object
バックスペースやデルボタンで突然エラーが出ることはありませんが、ある圧力(7-15)の後に、それらのボタンをもっと早く押しても圧力が必要になります!プラグインが動作しますが、いくつかの問題を続行し、エラーの後
:お子様連れの行は、数回複製され、フィルタリング機能がうまく動作しません...
今、あなたはちょうど私が持っていることを私に伝えることができますいくつかの再帰問題...しかし、素敵な話は私はコード内の任意の再帰を持っていないということです! 2つのボタンdelとbackspaceによってトリガされるイベントがあるかもしれませんが、本当に理解できません。
私は本当にクレイジーになっています!私は助けが必要です!
ルカ
多くのありがとうaurora !!私はすでに再帰制限を変更するために考慮に入れましたが、まだ試していませんでした(私は恐れました:D)。 とにかくあなたの問題については、私は別のスレッドを持っていないので、私とは違うように思えます(しかしgtkが信号を処理するときに何かを作成するかどうかはわかりません)...ところで、あなたのコードでは、エラーは発生しません? 私はタイマーを使うことを考えていたので、それぞれの重要な圧力の後に 'ライブ検索'が突然開始しませんでしたが、スレッディングクラスのタイマーは私の目的のためにかなりうそつきそうです... –
スレッドを覚えています=この問題は、複数のプロセスで私のために発生しました。プロセスは、実行中の別のプログラムとほとんど同じですが、単一のプロセス内に多くのスレッドを持つことができます。 – Aurora
まあ、間違いが起こったのは...私にとっては非常に奇妙です: ライブ検索はTextEntryで入力すると始まり、何かを入力して削除すると検索機能でエラーが発生しますバックスペースを持つすべての文字ですが、 クエリの長さ= 1と最後のキーが押された= 'BackSpace' –