【发布时间】:2012-03-15 15:33:31
【问题描述】:
我有一个 gtk 小部件,我想知道它的后代中是否还有另一个小部件。如果有,我想返回它,否则返回无。这是一个简单的递归问题,但我似乎无法找到正确的方法来做到这一点。
在林间空地 xml 文件中,我有:
<object class="GtkDialog" id="monkey">
[...]
<object class="GtkTreeView" id="ook">
并且对find(my_monkey_object, 'ook') 的调用应该返回 GtkTreeView 对象。
find() 应该类似于
def find (node, id):
if node.XXX() == id: return node
for child in node.get_children():
ret = find(child, id)
if ret: return ret
return None
我不确定我需要使用哪种 XXX() 方法。 get_name() 看起来很有希望,但返回的是对象的类名,而不是它的“id”。我使用的版本是 pygtk-2.24。
请参阅此Python GTK+ widget name 问题以了解相同的问题。
请注意,bug 可以解释问题:我希望生成器 ID 来自 GTK 小部件树。可悲的是,这似乎不可能得到......
【问题讨论】:
-
我不确定它在 python 中是如何工作的,但是根据 gtk 文档,您可以从 gtk_buildable_get_name 获取“id”名称。
-
gtk.Buildable(widget).get_name()在该错误的第 19 条评论中不起作用吗?