2012-03-06 16 views
0

私はtkinterを使いこなし、データセットに基づいていくつかの動的グラフィックスを作成しています。Python/Tkinter - 空白に基づいてキャンバスを切り取る?

私は1000x1000ピクセルの任意の大きさのキャンバスを使い始めましたが、今ではイメージを作ったので、縁の空いている部分の周りにキャンバスを作っているかどうか疑問に思いました。

私はこれを達成するためにいくつかの方法を考えていますが、オブジェクトがヒットするまで各エッジをトリミングすることが考えられますが、オブジェクトが直接アドレス指定されているキャンバスの位置ですので、上のRHSのキャンバスを変更すると、オブジェクトがコンサートで動くようになります。別の方法は、すべてのオブジェクトを単一の名前付きオブジェクトにグループ化し、ボーダーを取得して何らかの方法で新しいサイズのキャンバス。

誰かがアイデアを持っていたのか、これまでにやったことがありますか?

答えて

1

キャンバスのメソッドbboxキャンバスのオブジェクトの境界ボックス(反対側の角)が表示されます。したがって、my_canvas.bbox("all")はキャンバス上のすべてのアイテムを含む矩形を返します。公式のTkのドキュメントによると、この方法は "実際の境界ボックスを数ピクセルだけ過大評価するかもしれません"

私はこの問題の文脈で "作物"の意味を正確には分かりませんが、オブジェクトの左上隅のx/yを使用する場合は、moveメソッドを使用してすべてのオブジェクトを-x1/-y1ピクセルだけ移動し、すべてのオブジェクトを左上隅に移動できます。

+0

ああ - 素晴らしい!それは良い出発点です。ありがとう。 – Jay

+0

私は上記のようにbboxメソッドを使い、すべてのオブジェクトを新しい場所に移動し、w.config(width =、height =)を使って結果の空白をキャンバスからトリミングしました。移動とトリミングによる本質的なクロッピング。 – Jay

関連する問題