1

かなり単純なもの、これ。例えば:

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応答しますが、アウトラインのクリックにのみ応答します。

塗りつぶしにほぼ透明な色を使用するよりも、これを解決するためのより良い方法はありますか?

4

3 に答える 3

1

答えは、「より良い」をどのように定義するかによって多少異なります。オブジェクトに塗りつぶしの色がない場合、クリックが登録されないのは事実です。1 つのオプションは、クリック イベントをキャンバス自体に置き、キャンバスfind_closestまたはfind_overlappingメソッドを使用してカーソルに最も近いオブジェクトを見つけることです。

于 2013-04-12T20:46:01.170 に答える
1

楕円の代わりに多角形を使用できます。

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

于 2013-04-12T22:28:33.527 に答える