누가 관심 : 나는 해결책 가지고 :`event.Skip를 호출하여
class SpinEndEventManager(object):
def __init__(self):
self._controls = []
self._event_handlers = []
self._has_spinned = False
def add(self, control, event_handler):
self._controls.append(control)
self._event_handlers.append(event_handler)
control.Bind(wx.EVT_SPINCTRL, self._on_event)
control.Bind(wx.EVT_LEFT_UP, self._on_event)
control.Bind(wx.EVT_KEY_DOWN, self._on_event)
control.Bind(wx.EVT_KEY_UP, self._on_event)
def _on_event(self, event):
is_spin_end_event = False
event_type = event.GetEventType()
control = event.GetEventObject()
if event_type == wx.wxEVT_COMMAND_SPINCTRL_UPDATED:
self._has_spinned = True
elif event_type == wx.wxEVT_LEFT_UP:
if self._has_spinned:
is_spin_end_event = True
event.Skip()
elif event_type == wx.wxEVT_KEY_DOWN:
key = event.GetKeyCode()
old_value = control.GetValue()
if key == wx.WXK_UP:
value = old_value + 1
elif key == wx.WXK_DOWN:
value = old_value - 1
control.SetValue(value)
value = control.GetValue()
if value != old_value:
self._has_spinned = True
if key == wx.WXK_DOWN:
value_string_length = len(str(value))
control.SetSelection(value_length, value_string_length)
elif event_type == wx.wxEVT_KEY_UP:
if self._has_spinned:
is_spin_end_event = True
if is_spin_end_event:
self._has_spinned = False
index = self._controls.index(control)
self._event_handlers[index](event)
당신은 기본 이벤트 핸들러를 호출 할 수 있습니다()를' – GP89