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()
告诉事件处理系统继续寻找匹配的处理程序,就像您的处理程序不存在时一样。
我正在使用滑块控件在我的应用程序中设置尺寸。不幸的是,在 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()
告诉事件处理系统继续寻找匹配的处理程序,就像您的处理程序不存在时一样。