gtk3 中的 `parent` 在哪里?
where is `parent` in gtk3?
很抱歉提出这样一个简单的问题,我正在从 PyGTK 转移到 PyGI,我的程序有几个对鼠标点击敏感的标签,方法是将它们添加到 EventBox
;结构在 glade 文件中定义,回调在 Python 代码中设置。
在 PyGTK 中,我们依赖于能够通过读取 Label
.
的 parent
属性 来找到 EventBox
现在我有了这个简单的 Python 代码:
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()
什么都不做,为 PyGtk 运行,但向 PyGI 抱怨,说 'Label' object has no attribute 'parent'
。
这不是我的代码使用 parent
字段的唯一地方,所以我需要一个通用的解决方案。
工作 link 到 pygi-convert.sh
将为学习提供 material。
如果您想知道,目标软件是 botanic database manager。
您正在寻找 get_parent()
方法:
print(self.label.get_parent())
您必须使用 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)>
很抱歉提出这样一个简单的问题,我正在从 PyGTK 转移到 PyGI,我的程序有几个对鼠标点击敏感的标签,方法是将它们添加到 EventBox
;结构在 glade 文件中定义,回调在 Python 代码中设置。
在 PyGTK 中,我们依赖于能够通过读取 Label
.
parent
属性 来找到 EventBox
现在我有了这个简单的 Python 代码:
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()
什么都不做,为 PyGtk 运行,但向 PyGI 抱怨,说 'Label' object has no attribute 'parent'
。
这不是我的代码使用 parent
字段的唯一地方,所以我需要一个通用的解决方案。
工作 link 到 pygi-convert.sh
将为学习提供 material。
如果您想知道,目标软件是 botanic database manager。
您正在寻找 get_parent()
方法:
print(self.label.get_parent())
您必须使用 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)>