2
我正在研究一个拖放功能,可以让我在canvas上移动项目。我让它工作(种类),但我只移动一点,但是线条在屏幕上射击(并最终关闭画布的可见部分,所以我不能得到它,我不知道在哪里何去何从下面是拖放我创建至今代码:。Tkinter拖放
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是我使用的存储数据的字典。原本我以为翻译画布坐标到窗口坐标会有所帮助,但它的作用与没有的东西。
,我读了,但是这并没有真正回答我的问题。我的问题是,它是如此迅速地移动的原因。如果有任何东西比最轻微的运动使它在画布上射击并且看不见,那么拖动它是没有用的。 – user2148990 2013-03-17 22:08:01
@ user2148990:您是否打印出了在“移动”调用中使用的值,看看它们是否您期望它们是? – 2013-03-17 22:17:49
它总是容易忽略的简单事情。重置起点现在已经很完美了。谢谢! – user2148990 2013-03-17 22:43:05