2016-07-20 12 views
0

Ich verwende einen Schieberegler, um eine Dimension in meiner Anwendung festzulegen. Leider scheint der Cursor nach dem Ereignis EVT_LEFT_UP mit dem Schieberegler gesperrt zu sein und ich muss irgendwo anders auf die Anwendung klicken, um sie freizugeben. Vermutlich vermisse ich etwas Einfaches, aber was ist es?wx Python-Cursor nach Mouse-Up-Ereignis nicht freigegeben

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() 

Edit: vereinfachen Code

+0

Was ist Ihr Betriebssystem/Toolkit? Wxpython/Python-Version? – Igor

Antwort

2

Das native Slider Widget meisten hat wahrscheinlich einen Build-in Event-Handler für EVT_LEFT_UP, die die Mausauswahl freigibt. Da Sie das Ereignis EVT_LEFT_UP abgefangen haben, verhindern Sie, dass der integrierte Handler aufgerufen wird. Sie können das Ereignisverarbeitungssystem anweisen, weiterhin nach passenden Handlern zu suchen, so wie es geschehen wäre, wenn Sie nicht dort wären, indem Sie in Ihrem Handler event.Skip() aufrufen.

+0

Perfekte Robin. Vielen Dank – Psionman