首页 > 解决方案 > Tkinter 画布感应触摸?

问题描述

我正在做一些游戏,我想知道是否有办法让 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)

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

总之,有没有办法让物体检测触摸,或者至少有办法改进这段代码?

标签: pythontkinter

解决方案


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


推荐阅读