wx python 鼠标松开事件后光标未释放

wx python cursor not released after mouse up event

我正在使用滑块控件在我的应用程序中设置尺寸。不幸的是,在 EVT_LEFT_UP 事件之后,光标似乎被锁定到滑块控件上,我需要单击应用程序上的其他地方才能释放它。我可能遗漏了一些简单的东西,但它是什么?

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

编辑:简化代码

本机滑块小部件很可能具有 EVT_LEFT_UP 的内置事件处理程序,可释放鼠标捕获。由于您拦截了 EVT_LEFT_UP 事件,因此您正在阻止调用该内置处理程序。您可以通过在您的处理程序中调用 event.Skip() 告诉事件处理系统继续寻找匹配的处理程序,就像您的处理程序不存在时一样。