私はドラッグアルゴリズムを作るためにwxPythonのイベントバインディングで遊んでいます。しかし、問題が発生しました。マウスが自分のフレームの直上にない場合、イベントはトリガーされません。wxPythonバインディングの問題
これは、マウスがフレームをエスケープするかのようにドラッグしているときに問題になります(ユーザーが移動した場合など)、フレームの位置が更新されません。
バインディングを変更して、マウスが問題のフレームを超えていなくてもトリガーできるようにしていますか?
スニペット:
self.Bind(wx.EVT_LEFT_DOWN, self.relative_mouse_position)
self.Bind(wx.EVT_LEFT_UP, self.wid_unbind)
スニペット:
def relative_mouse_position (self, event):
cx, cy = wx.GetMousePosition()
x, y = self.GetPosition()
RelX = cx - x
RelY = cy - y
self.Bind(wx.EVT_MOTION, lambda event: self.wid_drag(event, RelX, RelY))
def wid_drag (self, event, RelX, RelY):
cx, cy = wx.GetMousePosition()
x = cx - RelX
y = cy - RelY
if x < 0:
x = 0
if y < 0:
y = 0
self.SetPosition((x, y))
def wid_unbind (self, event):
self.Unbind(wx.EVT_MOTION)