pygtk:我的自定义小部件应该从哪个类继承?

时间:2010-09-30 20:26:39

标签: python inheritance gtk pygtk

在pygtk中制作自定义小部件时,它应该从哪个类继承?我希望能够将小部件放在其他小部件中,但我不希望其他人将内容放入我的小部件中。通常我会将我的小部件继承自gtk.HBoxgtk.VBox,这样可以正常工作,但是有人可以在我的小部件上执行pack_start()并导致奇怪的事情发生。我会继承gtk.Widget但是我该如何添加内容呢?我会继承gtk.Containergtk.Bin,但文档说它们是抽象类。

1 个答案:

答案 0 :(得分:0)

如果您的自定义窗口小部件包含其他(可能是标准的)窗口小部件,则只能在重写的pack_方法中引发异常。这样,没人能把东西放进去(很容易)。在课堂内,您必须使用super(...).pack_xxx代替self.pack_xxx

但是从gtk.Container派生出来可能更好。然后你必须实现像do_add(self, widget)这样的抽象方法。

如果您只绘制自定义内容(无子项),则无需从容器窗口小部件派生。请参阅tutorial on pygtk.org