2012-02-22 5 views
1

gtk.notebook_set_window_creation_hook_functionが戻り値の点で探していることを理解するのが難しいです。gtk.notebook_set_window_creation_hook関数が返される

documentationによると、それをドロップする別のノートブックの戻り値を探しています。ドラッグがキャンセルされている場合は、Noneです。

def notebook_creation_hook_callback(notebook, page, x, y): 
    window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
    page.reparent(window) 
    window.move(x,y) 
    return None 

注:

はここに私のコールバックの例で、私は別のノートブックにそれを追加することなく、独自のウィンドウにノートブック・タブ(ページ)の内容を引っ張るために、この機能を使用しようとしています。アクションは機能し、指定したページでウィンドウを正常に作成できますが、毎回TypeError: GtkNotebook window creation hook function return should be a GtkNotebook or None が表示されます。場合によっては、この方法で作成されたウィンドウがseg faultでアプリケーション全体をクラッシュさせることがあります。

このコールバック関数を使用して、ドラッグしたページから新しいウィンドウを作成できますか?そうでない場合は、私が試すことができる他の方法はありますか?

+0

偉大な質問です。もしGoogle Code Searchだけがまだ稼働していれば、あなたは 'set_window_creation_hook'をコード検索して答えを見つけることができます。 – ptomato

答えて

0

私の質問に対する回答が見つかりませんでした。しかし、私がテストとドキュメンテーションで収集したものから、gtk.notebook_set_window_creation_hook関数はノートブックタブをノートブックから別のノートブックにドラッグアンドドロップするのに使用されます。ウィジェットを再作成してもノートブックを含んでいない新しいウィンドウにドロップすると、不自然な動作やエラーが発生します。

ここでは、新しいノートブックを作成している場合のこの関数フックのコールバック関数の外観の例を示します。

def notebook_creation_hook_callback(notebook, page, x, y): 
    new_notebook = gtk.Notebook 
    new_notebook.set_group_id(notebook.get_group_id()) #Id must be the same as original notebook 
    window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
    window.add(new_notebook) 
    window.show_all() 
    window.move(x,y) 
    return new_notebook #Return the new notebook on success