我正在做一些游戏,我想知道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_closest
和find_overlapping
的方法,可用于确定对象是否在触摸。
关于python - Tkinter Canvas Sense Touch?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54607289/