相当简单,这个。例如:
a = canvas.create_circle(0,0,50,50,outline='red',width=3,fill='')
b = canvas.create_circle(0,0,50,50,outline='red',width=3,fill='red')
b
将响应圈子中任何位置的点击事件,而a
将仅响应轮廓上的点击。
有没有更好的方法来解决这个问题,而不仅仅是使用几乎透明的颜色来填充?
答案在某种程度上取决于你如何定义“更好”。如果对象没有填充颜色,则点击不会注册。一种选择是将click事件放在画布上,然后使用画布find_closest
或find_overlapping
方法查找离光标最近的对象。
您可以使用多边形而不是椭圆形:
a = canvas.create_polygon(100,100,50,150,100,200,150,150, outline='red', fill='', smooth=1)
编辑:
多边形对鼠标点击很敏感,即使它没有填充颜色(或大纲)。