Python GtkBuilder не может импортировать виджет Box из Glade 3.14

В моем макете я использую массу макетов блоков. В большинстве руководств, которые я смотрел, люди использовали HBox и VBox. Я не думал, что Box будет так сильно отличаться.

GtkBuilder с треском задыхается каждый раз, когда у меня есть макет Box в файле Glade, выдавая мне следующее сообщение об ошибке:

Gtk:ERROR:/build/buildd/gtk+3.0-3.6.0/./gtk/gtknotebook.c:1235:gtk_notebook_buildable_add_child: assertion failed: (page != NULL)

Я просмотрел это, и лучший ответ, который у них был, - вернуться к Glade 3.8. Я не хочу этого делать, потому что Glade 3.8 был разработан для GTK+ 2, а я хочу разрабатывать для GTK+ 3 (мне очень нравится интерфейс оболочки Gnome). Таким образом, я пытаюсь придерживаться 3.14.

Есть ли другая версия GtkBuilder, поддерживающая новый макет Box? Просто кажется странным, что разработчики Glade нарушили свою поддержку, не обновив соответствующий объект GtkBuilder.

Вот код Python, который создает интерфейс:

from gi.repository import Gtk

class MainWindow(object):

    def __init__(self):
        self.builder = Gtk.Builder()
        self.builder.add_from_file('main-window.glade')

        self.window = self.builder.get_object('mainWindow')

        self.builder.connect_signals(self)

Любая помощь или совет очень ценятся!


person Spen-ZAR    schedule 15.04.2013    source источник
comment
Что заставляет вас думать, что проблема связана с GtkBox? Ошибка говорит, что блокнот не может добавить ребенка. У вас есть очень маленький тестовый пример с поляной? Скажем, GtkWindow, GtkNotebook, GtkBox внутри страницы и GtkLabel внутри GtkBox.   -  person gpoo    schedule 15.04.2013
comment
Я должен лучше читать сообщения об ошибках... Я понял, что на некоторых страницах моего GtkNotebook ничего нет. Это объясняет, почему он жаловался на assertion failed: (page != NULL). Просто чтобы быть тщательным, я провел несколько тестов с макетом Box, в том числе оставил некоторые пробелы пустыми, и он отлично работает. Спасибо большое за помощь.   -  person Spen-ZAR    schedule 15.04.2013
comment
Вы должны добавить это как ответ и принять его. Другие люди могут увидеть в этом пользу в будущем.   -  person gpoo    schedule 15.04.2013


Ответы (1)


Спасибо gpoo за помощь в этом:

Обязательно прочитайте сообщения об ошибках! У меня был GtkNotebook с пустыми страницами, из-за чего GtkBuilder пожаловался. Так что никаких пустых страниц.

Кроме того, GtkBox прекрасно работает во всех своих перестановках (по крайней мере, в интерфейсе Python).

person Spen-ZAR    schedule 15.04.2013
comment
Ах, я рад, что вы нашли решение; Я изучал исходный код GTK+ и до сих пор не понял, что проблема заключалась в пустой странице в дизайнере интерфейса. Код gtknotebook.c жалуется на отсутствующую страницу. Пользовательский интерфейс Glade (здесь 3.6.7) также не очень очевиден — он показывает пустые страницы как пустые, но существующие. - person Bernd Jendrissek; 24.04.2013
comment
Только что была такая же проблема с ноутбуком. И немного жалею, что перешел на Glade 3.18... Ооочень медленно. Я понятия не имею, почему, но даже на машине с частотой 3,6 ГГц обновление дисплея занимает больше секунды. Надеюсь, я не пожалею, что перешел на gtk3... - person jcoppens; 19.05.2015