diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-06-13 06:24:11 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-06-13 06:24:11 (GMT) |
commit | 8acb568c8863e9b7d0f52df42a0677688afc0988 (patch) | |
tree | e76010be89cf8513798a200356c2bf36728179f7 /Lib | |
parent | dffd42f1301271e2fec386732d3459771eec3cd5 (diff) | |
download | cpython-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__.py | 16 | ||||
-rw-r--r-- | Lib/tkinter/test/test_tkinter/test_misc.py | 8 |
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') |