2016-07-20 2 views
0

슬라이더 컨트롤을 사용하여 응용 프로그램에서 크기를 설정하고 있습니다. 불행히도 커서는 EVT_LEFT_UP 이벤트가 발생한 후 슬라이더 컨트롤에 잠겨있는 것 같습니다.이를 릴리스하려면 응용 프로그램의 다른 부분을 클릭해야합니다. 아마 뭔가 간단한 것을 놓치고있을 것입니다. 그러나 그것은 무엇입니까?마우스 업 이벤트 발생 후 wx python 커서가 해제되지 않습니다.

import wx 


    class Example(wx.Frame): 
     def __init__(self): 
      wx.Frame.__init__(self, None, -1, 'Slider control') 
      self.Centre() 
      self.sldr_size = wx.Slider(self, 100, 0, 1, 100, size=(250, -1), style=wx.SL_HORIZONTAL) 
      self.sldr_size.Bind(wx.EVT_LEFT_UP, self.sldr_size_button_up) 
      sizer = wx.GridBagSizer() 
      sizer.Add(self.sldr_size, pos=(0, 0)) 
      self.SetSizer(sizer) 
      self.sldr_size.SetValue(33) 
      self.Show() 

     def sldr_size_button_up(self, event): 
      del event 
      self.item_size = 1.3 - float(self.sldr_size.GetValue())/100 
      print self.item_size 

    if __name__ == '__main__': 
     simple_screen_app = wx.App() 
     main_frame = Example() 
     main_frame.Show(True) 
     simple_screen_app.MainLoop() 

편집 : 간단하게 코드

+0

OS/툴킷이란 무엇입니까? wxpython/python 버전? – Igor

답변

2

가능성이 가장 높은 네이티브 슬라이더 위젯은 빌드에서 마우스 캡처를 출시 EVT_LEFT_UP에 대한 이벤트 핸들러를 가지고있다. EVT_LEFT_UP 이벤트를 인터셉트했기 때문에 내장 된 핸들러가 호출되는 것을 막을 수 있습니다. 핸들러에서 event.Skip()을 호출하여 일치하는 핸들러를 계속 찾도록 이벤트 처리 시스템에 알릴 수 있습니다.

+0

완벽한 로빈. 고맙습니다 – Psionman