1

PythonのTkinterウィンドウツールキットを使用してソリティアクローンを作成しています。私のウィンドウにはメインキャンバスが含まれており、メインキャンバス内には、カードを保持するCanvasから継承する一連のウィジェットが含まれています。ユーザーがマウスを下にクリックして内側のキャンバスの1つでカードを選択し、それを新しいキャンバスにドラッグして、カードを受け取り側のキャンバスに配置できる「ドラッグして移動」システムを実装しました。

問題:カードが描かれているキャンバスと移動先のキャンバスの間でカードを動かして描画したいので、ユーザーはクリックアンドドラッグの動作中にカードが画面上を移動しているのを見ることができます。すでに持っている帆布の間にカードを引こうとすると、常に後ろに引かれます。つまり、内側の帆布の周りのパディングを通してしかカードを見ることができません。

これは、効果がはっきりと見えるように、そして内側のキャンバスもはっきりと見えるように、それらのいくつかを描いた例です。

オーバーラップの問題のスクリーンショット

試したこと:Misc.lower(aCanvas)を使用してキャンバスを元に戻そうとしましたが、目的の効果を作成できませんでした。カスタムのオーバーライドカーソルもデザインしようとしましたが、カーソルのサイズが32px * 32pxに制限されているようです。これは、移動したいカード画像のサイズには不十分です。

私の質問:別のキャンバスの内側にあるキャンバスの上に描画するにはどうすればよいですか?できない場合、この問題をどのように解決しますか?

4

1 に答える 1

1

やりたいことはできません。埋め込まれたウィジェットは常にキャンバスアイテムの上にあります。

なぜあなたはキャンバスをbcanvasesの中に埋め込んでいるのですか?単一のキャンバスを使用しないのはなぜですか?

于 2012-11-12T03:47:25.857 に答える