我正在做一些游戏,我想知道tkinter画布对象是否有办法检测是否有人在触摸它。我目前使用这样的东西:

pos = canvas.coords(insert_object_here)
otherpos = canvas.coords(other_object)
if pos[3] <= objectpos[3] and pos[1] >= objectpos[1]:
    if pos[2] <= objectpos[0]:
        if pos[2] >= objectpos[0]-self.speed:
            canvas.move(self.id, -x, y)
    if pos[0] >= objectpos[2]:
        if pos[0] <= objectpos[2]+self.speed:
            canvas.move(self.id, -x, y)
if pos[2] <= objectpos[2] and pos[0] >= objectpos[0]:
    if pos[3] <= objectpos[1]:
        if pos[3] >= objectpos[1]-self.speed:
            canvas.move(self.id, x, -y)
    if pos[1] >= objectpos[3]:
        if pos[1] <= objectpos[3]+self.speed:
            canvas.move(self.id, x, -y)

canvas.move(self.id, x, y)


这是很多代码,我只需要使用一次,就可以使函数毫无意义。

总而言之,有没有一种方法可以使物体检测到触摸,或者至少有一种方法可以改善此代码?

最佳答案

画布具有名为find_closestfind_overlapping的方法,可用于确定对象是否在触摸。

关于python - Tkinter Canvas Sense Touch?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54607289/

10-12 22:11