2013-12-09 3 views

답변

2

이 주목 :

Getting a descendant (child) widget by name | PHP-GTK Community ... 여기에서 PHP 하나의 포트 함수이다

# http://cdn.php-gtk.eu/cdn/farfuture/riUt0TzlozMVQuwGBNNJsaPujRQ4uIYXc8SWdgbgiYY/mtime:1368022411/sites/php-gtk.eu/files/gtk-php-get-child-widget-by-name.php__0.txt 
# note get_name() vs gtk.Buildable.get_name(): https://stackoverflow.com/questions/3489520/python-gtk-widget-name 
def get_descendant(widget, child_name, level, doPrint=False): 
    if widget is not None: 
    if doPrint: print("-"*level + gtk.Buildable.get_name(widget) + " :: " + widget.get_name()) 
    else: 
    if doPrint: print("-"*level + "None") 
    return None 
    #/*** If it is what we are looking for ***/ 
    if(gtk.Buildable.get_name(widget) == child_name): # not widget.get_name() ! 
    return widget; 
    #/*** If this widget has one child only search its child ***/ 
    if (hasattr(widget, 'get_child') and callable(getattr(widget, 'get_child')) and child_name != ""): 
    child = widget.get_child() 
    if child is not None: 
     return get_descendant(child, child_name,level+1,doPrint) 
    # /*** Ity might have many children, so search them ***/ 
    elif (hasattr(widget, 'get_children') and callable(getattr(widget, 'get_children')) and child_name !=""): 
    children = widget.get_children() 
    # /*** For each child ***/ 
    found = None 
    for child in children: 
     if child is not None: 
     found = get_descendant(child, child_name,level+1,doPrint) # //search the child 
     if found: return found 

if (window): 
    window.connect("destroy", gtk.main_quit) 
    #pprint(inspect.getmembers(window.get_children()[0])) 
    print "E: " + str(get_descendant(window, "nofind", level=0, doPrint=True)) 

은 사용법 :

print "E: " + str(get_descendant(window, "nofind", level=0, doPrint=True)) 
# output: 

# window1 :: GtkWindow 
# -scrolledwindow1 :: GtkScrolledWindow 
# --viewport1 :: GtkViewport 
# ---vbox1 :: GtkVBox 
# ----handlebox1 :: GtkHandleBox 
# -----drawingarea1 :: GtkDrawingArea 
# ----handlebox2 :: GtkHandleBox 
# ----handlebox3 :: GtkHandleBox 
# E: None 

print "E: " + str(get_descendant(window, "viewport1", level=0, doPrint=True)) 
# output: 

# window1 :: GtkWindow 
# -scrolledwindow1 :: GtkScrolledWindow 
# --viewport1 :: GtkViewport 
# E: <gtk.Viewport object at 0x96cadc4 (GtkViewport at 0x95278d0)> 
관련 문제