summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2016-06-13 06:24:11 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2016-06-13 06:24:11 (GMT)
commit8acb568c8863e9b7d0f52df42a0677688afc0988 (patch)
treee76010be89cf8513798a200356c2bf36728179f7 /Lib
parentdffd42f1301271e2fec386732d3459771eec3cd5 (diff)
downloadcpython-8acb568c8863e9b7d0f52df42a0677688afc0988.zip
cpython-8acb568c8863e9b7d0f52df42a0677688afc0988.tar.gz
cpython-8acb568c8863e9b7d0f52df42a0677688afc0988.tar.bz2
Issue #27025: Generated names for Tkinter widgets are now more meanful
and recognizirable.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/tkinter/__init__.py16
-rw-r--r--Lib/tkinter/test/test_tkinter/test_misc.py8
2 files changed, 20 insertions, 4 deletions
diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py
index cfb5268..c687da5 100644
--- a/Lib/tkinter/__init__.py
+++ b/Lib/tkinter/__init__.py
@@ -489,6 +489,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):
@@ -2174,7 +2177,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 = '`%s' % (name,)
+ else:
+ name = '`%s%d' % (name, count)
self._name = name
if master._w=='.':
self._w = '.' + name
@@ -3392,9 +3403,6 @@ class Image:
if not name:
Image._last_id += 1
name = "pyimage%r" % (Image._last_id,) # tk itself would use image<x>
- # The following is needed for systems where id(x)
- # can return a negative number, such as Linux/m68k:
- if name[0] == '-': name = '_' + name[1:]
if kw and cnf: cnf = _cnfmerge((cnf, kw))
elif kw: cnf = kw
options = ()
diff --git a/Lib/tkinter/test/test_tkinter/test_misc.py b/Lib/tkinter/test/test_tkinter/test_misc.py
index 85ee2c7..9dc1e37 100644
--- a/Lib/tkinter/test/test_tkinter/test_misc.py
+++ b/Lib/tkinter/test/test_tkinter/test_misc.py
@@ -12,6 +12,14 @@ class MiscTest(AbstractTkTest, unittest.TestCase):
f = tkinter.Frame(t, name='child')
self.assertEqual(repr(f), '<tkinter.Frame object .top.child>')
+ def test_generated_names(self):
+ t = tkinter.Toplevel(self.root)
+ f = tkinter.Frame(t)
+ f2 = tkinter.Frame(t)
+ b = tkinter.Button(f2)
+ for name in str(b).split('.'):
+ self.assertFalse(name.isidentifier(), msg=repr(name))
+
def test_tk_setPalette(self):
root = self.root
root.tk_setPalette('black')