我需要跟踪图像在画布上的位置

时间:2019-05-08 23:46:03

标签: python tkinter

我已将3张图像导入画布。 当我将这些图像从一个位置拖到另一个位置时,如何获取这些图像的x和y坐标

拖放

from tkinter import *
root = Tk()
c = Canvas( root, width = 1920, height = 1080, bg = "white" ); c.pack()

class MainFrame:

    def __init__( self, image0, image1, image2 ):
        self.__image0 = image0
        self.__image1 = image1
        self.__image2 = image2
        self.__x, self.__y = 250,250
        self.__picture0 = c.create_image( self.__x, self.__y,
                                          image =  self.__image0 )
        self.__picture1 = c.create_image( self.__x, self.__y,
                                          image =  self.__image1 )
        self.__picture2 = c.create_image(self.__x, self.__y,image = self.__image2)
        self.__move = False
        c.bind( "<Button-1>", self.startMovement )
        c.bind( "<ButtonRelease-1>", self.stopMovement )
        c.bind( "<Motion>", self.movement )

    def startMovement( self, event ):
        self.__move = True
        self.initi_x = c.canvasx(event.x) 
        self.initi_y = c.canvasy(event.y)
        print('startMovement init', self.initi_x, self.initi_y)
        self.movingimage = c.find_closest(self.initi_x, self.initi_y, halo=5)
        print(self.movingimage)
        print(c.find_all()) # get all canvas objects ID

    def stopMovement( self, event ):
        self.__move = False

    def movement( self, event ):
        if self.__move:
            end_x = c.canvasx(event.x)
            end_y = c.canvasy(event.y)
            print('movement end', end_x, end_y)
            deltax = end_x - self.initi_x #Find the difference
            deltay = end_y - self.initi_y
            print('movement delta', deltax, deltay)
            self.initi_x = end_x #Update previous current with new location
            self.initi_y = end_y
            print('movement init', self.initi_x, self.initi_y)
            c.move(self.movingimage, deltax, deltay) # move object
            print(end_x)

0 个答案:

没有答案