我很抱歉提出这么简单的问题,我正在从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。
答案 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)>