获取Tkinter窗口中所有子小部件

33 投票
1 回答
39180 浏览
提问于 2025-04-17 01:18

有没有办法获取一个Tkinter控件的所有子控件,然后再获取这些子控件的子控件,依此类推?

简单来说,我想要获取一个窗口里所有的控件。

补充:我找到了一种方法,使用了Bryan的那句话:

def all_children (wid) :
    _list = wid.winfo_children()

    for item in _list :
        if item.winfo_children() :
            _list.extend(item.winfo_children())

    return _list

1 个回答

36

你要找的方法是 winfo_children

可以像这样使用递归:

def all_children(wid, finList=None, indent=0):
    finList = finList or []
    print(f"{'   ' * indent}{wid=}")
    children = wid.winfo_children()
    for item in children:
        finList.append(item)
        all_children(item, finList, indent + 1)
    return finList

撰写回答