mirror of
https://github.com/python/cpython.git
synced 2025-11-11 14:44:57 +00:00
Issue #27294: Numerical state in the repr for Tkinter event objects is now
represented as a compination of known flags.
This commit is contained in:
parent
45ff4a5487
commit
9c6c3fb435
2 changed files with 24 additions and 8 deletions
|
|
@ -220,28 +220,41 @@ class Event:
|
||||||
delta - delta of wheel movement (MouseWheel)
|
delta - delta of wheel movement (MouseWheel)
|
||||||
"""
|
"""
|
||||||
def __repr__(self):
|
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:
|
if not self.char:
|
||||||
del state['char']
|
del attrs['char']
|
||||||
elif self.char != '??':
|
elif self.char != '??':
|
||||||
state['char'] = repr(self.char)
|
attrs['char'] = repr(self.char)
|
||||||
if not getattr(self, 'send_event', True):
|
if not getattr(self, 'send_event', True):
|
||||||
del state['send_event']
|
del attrs['send_event']
|
||||||
if self.state == 0:
|
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:
|
if self.delta == 0:
|
||||||
del state['delta']
|
del attrs['delta']
|
||||||
# widget usually is known
|
# widget usually is known
|
||||||
# serial and time are not very interesing
|
# serial and time are not very interesing
|
||||||
# keysym_num duplicates keysym
|
# keysym_num duplicates keysym
|
||||||
# x_root and y_root mostly duplicate x and y
|
# x_root and y_root mostly duplicate x and y
|
||||||
keys = ('send_event',
|
keys = ('send_event',
|
||||||
'state', 'keycode', 'char', 'keysym',
|
'state', 'keysym', 'keycode', 'char',
|
||||||
'num', 'delta', 'focus',
|
'num', 'delta', 'focus',
|
||||||
'x', 'y', 'width', 'height')
|
'x', 'y', 'width', 'height')
|
||||||
return '<%s event%s>' % (
|
return '<%s event%s>' % (
|
||||||
self.type,
|
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
|
_support_default_root = 1
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,9 @@ What's New in Python 3.6.0 alpha 3
|
||||||
Library
|
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
|
- 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.
|
as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue