Я работаю над функцией перетаскивания, которая позволит мне перемещать элементы на холсте. У меня это работает (вроде), но я двигаюсь лишь слегка, но линия проходит по экрану (и, в конечном итоге, выходит за видимую часть холст, поэтому я не могу добраться до него. Я не уверен, куда идти дальше. Ниже приведен код перетаскивания, который я создал до сих пор:
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 — это словарь, который я использую для хранения данных. Первоначально я думал, что перевод координат холста в координаты окна поможет, но он действует так же, как и без этого материала.