从代码动态构建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
修补了一下但没有成功。
答案 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)