changeset: 102095:e0ec4abe659f user: Serhiy Storchaka date: Sat Jun 18 21:55:26 2016 +0300 files: Lib/tkinter/__init__.py Misc/NEWS description: Issue #27294: Numerical state in the repr for Tkinter event objects is now represented as a compination of known flags. diff -r a4d00ae53e35 -r e0ec4abe659f Lib/tkinter/__init__.py --- a/Lib/tkinter/__init__.py Sat Jun 18 21:43:16 2016 +0300 +++ b/Lib/tkinter/__init__.py Sat Jun 18 21:55:26 2016 +0300 @@ -220,28 +220,41 @@ delta - delta of wheel movement (MouseWheel) """ def __repr__(self): - state = {k: v for k, v in self.__dict__.items() if v != '??'} + attrs = {k: v for k, v in self.__dict__.items() if v != '??'} if not self.char: - del state['char'] + del attrs['char'] elif self.char != '??': - state['char'] = repr(self.char) + attrs['char'] = repr(self.char) if not getattr(self, 'send_event', True): - del state['send_event'] + del attrs['send_event'] if self.state == 0: - del state['state'] + del attrs['state'] + elif isinstance(self.state, int): + state = self.state + mods = ('Shift', 'Lock', 'Control', + 'Mod1', 'Mod2', 'Mod3', 'Mod4', 'Mod5', + 'Button1', 'Button2', 'Button3', 'Button4', 'Button5') + s = [] + for i, n in enumerate(mods): + if state & (1 << i): + s.append(n) + state = state & ~((1<< len(mods)) - 1) + if state or not s: + s.append(hex(state)) + attrs['state'] = '|'.join(s) if self.delta == 0: - del state['delta'] + del attrs['delta'] # widget usually is known # serial and time are not very interesing # keysym_num duplicates keysym # x_root and y_root mostly duplicate x and y keys = ('send_event', - 'state', 'keycode', 'char', 'keysym', + 'state', 'keysym', 'keycode', 'char', 'num', 'delta', 'focus', 'x', 'y', 'width', 'height') return '<%s event%s>' % ( self.type, - ''.join(' %s=%s' % (k, state[k]) for k in keys if k in state) + ''.join(' %s=%s' % (k, attrs[k]) for k in keys if k in attrs) ) _support_default_root = 1 diff -r a4d00ae53e35 -r e0ec4abe659f Misc/NEWS --- a/Misc/NEWS Sat Jun 18 21:43:16 2016 +0300 +++ b/Misc/NEWS Sat Jun 18 21:55:26 2016 +0300 @@ -10,6 +10,9 @@ Library ------- +- Issue #27294: Numerical state in the repr for Tkinter event objects is now + represented as a compination of known flags. + - Issue #27177: Match objects in the re module now support index-like objects as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang.