diff -r 77604a2f019b Lib/tkinter/__init__.py
--- a/Lib/tkinter/__init__.py Sat Jun 11 04:36:34 2016 -0400
+++ b/Lib/tkinter/__init__.py Sat Jun 11 22:20:55 2016 +0300
@@ -421,6 +421,9 @@ class Misc:
Base class which defines methods common for interior widgets."""
+ # used for generating child widget names
+ _last_child_ids = None
+
# XXX font command?
_tclCommands = None
def destroy(self):
@@ -2103,7 +2106,15 @@ class BaseWidget(Misc):
name = cnf['name']
del cnf['name']
if not name:
- name = repr(id(self))
+ name = self.__class__.__name__.lower()
+ if master._last_child_ids is None:
+ master._last_child_ids = {}
+ count = master._last_child_ids.get(name, 0) + 1
+ master._last_child_ids[name] = count
+ if count == 1:
+ name = '0%s' % (name,)
+ else:
+ name = '0%s%d' % (name, count)
self._name = name
if master._w=='.':
self._w = '.' + name
@@ -3321,9 +3332,6 @@ class Image:
if not name:
Image._last_id += 1
name = "pyimage%r" % (Image._last_id,) # tk itself would use image