2012-02-22 107 views
1

我在理解它是什麼,該gtk.notebook_set_window_creation_hook_function在返回值方面尋找難度。gtk.notebook_set_window_creation_hook函數返回

按照documentation,它正在尋找您拖放到另一個筆記本或無的返回值,如果拖動被取消。

這裏是我的回調例子:

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故障而崩潰整個應用程序。

我可以用這個回調函數來創建一個新的窗口了拖頁面的?如果沒有,我還可以嘗試其他方法嗎?

+0

大問題。如果只有谷歌代碼搜索仍然存在,你可以通過代碼搜索'set_window_creation_hook'找到答案...... – ptomato 2012-02-23 08:48:50

回答

0

我無法找到我的問題的答案。但是從我的測試和文檔中收集的信息來看,gtk.notebook_set_window_creation_hook函數用於將筆記本選項卡從一個筆記本拖放到另一個筆記本。將它放入一個不包含筆記本的新窗口中,即使重新裝配該小部件也會導致出現故障行爲和seg故障。

下面是此功能掛鉤的回調函數如何能像如果您要創建一個新的筆記本電腦爲例。

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