鼠标向上事件后未释放wx python游标

时间:2016-07-20 18:12:56

标签: wxpython wxwidgets

我正在使用滑块控件在我的应用程序中设置尺寸。不幸的是,在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()

编辑:简化代码

1 个答案:

答案 0 :(得分:2)

本机滑块小部件很可能具有EVT_LEFT_UP的内置事件处理程序,用于释放鼠标捕获。由于您已截获EVT_LEFT_UP事件,因此您正在阻止调用内置处理程序。您可以通过调用处理程序中的event.Skip()来告诉事件处理系统继续查找匹配的处理程序,如果不存在匹配的处理程序,则可以这样做。