tkinter:透明形状的点击不会注册

问题描述 投票:1回答:2

相当简单,这个。例如:

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将仅响应轮廓上的点击。

有没有更好的方法来解决这个问题,而不仅仅是使用几乎透明的颜色来填充?

python tkinter
2个回答
1
投票

答案在某种程度上取决于你如何定义“更好”。如果对象没有填充颜色,则点击不会注册。一种选择是将click事件放在画布上,然后使用画布find_closestfind_overlapping方法查找离光标最近的对象。


0
投票

您可以使用多边形而不是椭圆形:

a = canvas.create_polygon(100,100,50,150,100,200,150,150, outline='red', fill='', smooth=1)

编辑:

多边形对鼠标点击很敏感,即使它没有填充颜色(或大纲)。

看到画布文档:http://www.tcl.tk/man/tcl/TkCmd/canvas.htm

© www.soinside.com 2019 - 2024. All rights reserved.