diff -r df8857c6f3eb Lib/tkinter/__init__.py --- a/Lib/tkinter/__init__.py Sun Jul 17 11:35:35 2016 +0300 +++ b/Lib/tkinter/__init__.py Sun Jul 24 08:29:48 2016 +0300 @@ -1340,7 +1340,24 @@ class Misc: for n in name: if not n: break - w = w.children[n] + try: + w = w.children[n] + except KeyError: + if '#' not in n: + raise + # This is a cloned menu. The name of cloned menu is generated + # from the full path of the original widget by replacing + # '.'s with '#'s and optionally appending an integer. + n = n.split("#")[-1] + while True: + try: + w = w.children[n] + except KeyError: + if not n or n[-1] not in '0123456789': + raise + n = n[:-1] + else: + break return w _nametowidget = nametowidget