我正在开发一个拖放功能,可以让我在画布上移动物品。我已经实现了(有点)但是我只移动一点点就会导致线条飞过屏幕(最终消失在画布的可见部分),所以我无法将其取回。我不确定下一步该怎么办。以下是我迄今为止创建的拖放代码:
def onPressToMove(self, event): #get initial location of object to be moved
winX = event.x - self.workspace.canvasx(0)
winY = event.y - self.workspace.canvasy(0)
self.dragInfo["Widget"] = self.workspace.find_closest(event.x, event.y, halo = 5)[0]
self.dragInfo["xCoord"] = winX
self.dragInfo["yCoord"] = winY
def onReleaseToMove(self, event): #reset data on release
self.dragInfo["Widget"] = None
self.dragInfo["xCoord"] = 0
self.dragInfo["yCoord"] = 0
def onMovement(self, event):
winX = event.x - self.workspace.canvasx(0)
winY = event.y - self.workspace.canvasy(0)
newX = winX - self.dragInfo["xCoord"]
newY = winY - self.dragInfo["yCoord"]
self.workspace.move(self.dragInfo["Widget"], newX, newY)
dragInfo是一个我用来存储数据的字典。起初我认为将画布坐标转换为窗口坐标会有帮助,但事实上并没有任何变化。