访问GTK +中的小部件

时间:2010-01-15 16:10:06

标签: python gtk

从代码动态构建GTK +小部件可以直接轻松访问子小部件。

现在,在从.glade文件构建GTK + Dialog(例如)时,如何访问子窗口小部件?

class ConfigDialog(object):
    def __init__(self, glade_file, testing=False):
        self.testing=testing
        builder = gtk.Builder()
        builder.add_from_file(glade_file)
        self.dialog = builder.get_object("config_dialog")
        self.dialog._testing=testing
        self.dialog._builder=builder

我在.get_internal_child修补了一下但没有成功。

问:我想说我想访问名为“name_entry”的小部件,我该怎么做呢?

2 个答案:

答案 0 :(得分:7)

您正在拨打电话

self.dialog = builder.get_object("config_dialog")

你也应该能够做到

self.nameEntry = builder.get_object("name_entry")

这至少是python-glade的工作方式,我认为GtkBuilder是一样的。

答案 1 :(得分:4)

此外,如果要搜索命名窗口小部件且Builder实例不可用,可以尝试使用以下实用程序功能:

def get_child_by_name(parent, name):
    """
    Iterate through a gtk container, `parent`, 
    and return the widget with the name `name`.
    """
    def iterate_children(widget, name):
        if widget.get_name() == name:
            return widget
        try:
            for w in widget.get_children():
                result = iterate_children(w, name)
                if result is not None:
                    return result
                else:
                    continue
        except AttributeError:
            pass
    return iterate_children(parent, name)