当我为我的应用程序创建UI类时,我常常想知道从Gtk.Widget
派生我的类是否更好,然后明确添加我需要的小部件或直接从特定小部件派生。
这是两个例子,哪一个是最好的?
class MyComponent(Gtk.Widget):
def __init__(self):
Gtk.Widget.__init__(self)
box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 6)
button1 = Gtk.Button.new_with_label("Awesome Button1")
button2 = Gtk.Button.new_with_label("Awesome Button2")
button3 = Gtk.Button.new_with_label("Awesome Button3")
box.pack_start(button1, True, True, 0)
box.pack_start(button2, True, True, 0)
box.pack_start(button3, True, True, 0)
self.add(box)
class MyComponent(Gtk.Box):
def __init__(self):
Gtk.Box.__init__(self, Gtk.Orientation.HORIZONTAL, 6)
button1 = Gtk.Button.new_with_label("Awesome Button1")
button2 = Gtk.Button.new_with_label("Awesome Button2")
button3 = Gtk.Button.new_with_label("Awesome Button3")
self.pack_start(button1, True, True, 0)
self.pack_start(button2, True, True, 0)
self.pack_start(button3, True, True, 0)
在我看来,第一个版本更好,因为我的组件在技术上不是Gtk.Box
,它是使用Gtk.Box
的小部件,但它也可以使用Gtk.Grid
或Gtk.DrawingArea
。
所以在设计观点上似乎是正确的,但也许还有一些我不了解的技术问题。你的建议是什么?
答案 0 :(得分:1)
这取决于你心中的抽象。问问自己:您的组件只是一个自定义的框或更多吗?
此外,你实际上需要继承吗?也许你可以放弃一个免费的工厂功能,根据自己的喜好创建一组Gtk.Widgets。
答案 1 :(得分:0)
我不明白为什么你认为第一个更好。只需将您真正想要的内容细分。 Gtk.Box 是一个Gtk.Widget所以无论你在哪里使用后者都可以使用前者。