pygtk: От какого класса должны наследоваться мои пользовательские виджеты? - PullRequest
1 голос
/ 01 октября 2010

При создании собственного виджета в pygtk, от какого класса он должен наследоваться? Я хочу иметь возможность помещать виджет в другие виджеты, но я не хочу, чтобы другие люди помещали вещи в мои. Обычно я заставляю мои виджеты наследовать от gtk.HBox или gtk.VBox, и это прекрасно работает, но тогда кто-то может сделать pack_start() для моего виджета и вызвать странные вещи. Я бы унаследовал от gtk.Widget, но как мне добавить что-то к нему? Я бы унаследовал от gtk.Container или gtk.Bin, но в документах говорится, что они являются абстрактными классами.

1 Ответ

0 голосов
/ 01 октября 2010

Если ваш пользовательский виджет содержит другие (возможно, стандартные) виджеты, вы можете просто вызвать исключение в переопределенных методах pack_.Таким образом, никто не может положить вещи (легко).Внутри вашего класса вы должны будете использовать super(...).pack_xxx вместо self.pack_xxx.

Но, вероятно, лучше получить из gtk.Container.Затем вам нужно будет реализовать его абстрактные методы, такие как do_add(self, widget).

. Если вы рисуете только пользовательский контент (без дочерних элементов), нет необходимости получать его из виджета контейнера.Смотрите руководство на pygtk.org .

...