функция gtk.notebook_set_window_creation_hook возврат - PullRequest
1 голос
/ 23 февраля 2012

Мне сложно понять, что именно ищет функция gtk.notebook_set_window_creation_hook_fl с точки зрения возвращаемого значения.

В соответствии с документацией он ищет возвращаемое значение другой записной книжки, в которую вы поместили его, или 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 каждый раз, когда делаю это. И иногда окно, созданное таким образом, иногда приводит к сбою всего приложения с ошибкой сегмента.

Можно ли использовать эту функцию обратного вызова для создания нового окна из перетаскиваемой страницы? Если нет, есть ли другие способы, которые я мог бы попробовать?

1 Ответ

0 голосов
/ 25 февраля 2012

Я не смог найти ответ на свой вопрос.Но из того, что я собрал во время тестирования и документации, функция 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
...