gtk3中的`parent`在哪里?

时间:2018-05-19 14:34:38

标签: python pygtk gtk3

我很抱歉提出这么简单的问题,我正在从PyGTK转到PyGI,我的程序有几个标签,它们对鼠标点击很敏感,可以在EventBox添加;结构在glade文件中定义,回调在Python代码中设置。

在PyGTK中,我们依靠能够通过阅读EventBox的{​​{1}}属性来找到parent

现在我有了这个简单的Python代码:

Label

没有做什么,为PyGtk运行,但抱怨PyGI,说if True: import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk else: import gtk as Gtk class MyWindow(Gtk.Window): def __init__(self): super(MyWindow, self).__init__() self.eventbox = Gtk.EventBox() self.add(self.eventbox) self.label = Gtk.Label("click me") self.eventbox.add(self.label) print self.label.parent win = MyWindow() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main()

这不是我的代码使用'Label' object has no attribute 'parent'字段的唯一地方,所以我需要一个通用的解决方案。

parent的工作链接将为学习提供材料。

如果您想知道,目标软件是botanic database manager

2 个答案:

答案 0 :(得分:1)

您正在寻找get_parent()方法:

print(self.label.get_parent())

答案 1 :(得分:1)

您必须使用Gtk.Widget get_parent()中的getter方法。

if True:
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk
else:
    import gtk as Gtk

class MyWindow(Gtk.Window):

    def __init__(self):
        super(MyWindow, self).__init__()

        self.eventbox = Gtk.EventBox()
        self.add(self.eventbox)
        self.label = Gtk.Label("click me")
        self.eventbox.add(self.label)
        print self.label.get_parent()

win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

执行后:

<Gtk.EventBox object at 0x7f802a597910 (GtkEventBox at 0x55a88239a130)>