かなり単純なもの、これ。例えば:
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
応答しますが、アウトラインのクリックにのみ応答します。
塗りつぶしにほぼ透明な色を使用するよりも、これを解決するためのより良い方法はありますか?
答えは、「より良い」をどのように定義するかによって多少異なります。オブジェクトに塗りつぶしの色がない場合、クリックが登録されないのは事実です。1 つのオプションは、クリック イベントをキャンバス自体に置き、キャンバスfind_closest
またはfind_overlapping
メソッドを使用してカーソルに最も近いオブジェクトを見つけることです。
楕円の代わりに多角形を使用できます。
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