ウィンドウに画像を入れて、その上にウィジェットをパックCanvas
したいので、キャンバスが背景として機能します。
マネージャーに 2 つの状態を設定することpack
はできますか? 1 つはウィジェット セット用で、もう 1 つは別のセット用ですか?
あなたの特定の質問に対する答えはノーです。2 つの状態を保持したり、同じ親で pack 2 の異なる方法を使用したりすることはできません。
しかし、あなたが達成したいことは単純だと思います。キャンバスの組み込み機能を使用して、キャンバスの一部である画像アイテムを作成し、フレームのようにキャンバスに詰め込みます。
画像を使用してラベル ウィジェットを作成し、他のウィジェットをラベルにパックすることで、同様のことを実現できます。
キャンバスを使用する利点の 1 つは、簡単に画像をタイル状に並べてキャンバス全体を塗りつぶし、背景画像を繰り返すことができることです。これにより、ウィンドウが拡大しても画像がウィンドウを塗りつぶし続けます (もちろん、十分に大きな元の画像を使用することもできます.. .)
ブライアンの答えはおそらく最良の一般的な解決策だと思います。ただし、プレイスジオメトリマネージャも確認することをお勧めします。場所ジオメトリマネージャを使用すると、ウィジェットの正確なサイズと位置を指定できます...これはすぐに面倒になる可能性がありますが、作業は完了します。
...ラベルとキャンバスを追加したかったので機能しないことが判明しましたが、背景を透明にする方法が見つかりません
追加の拡張機能をロードしても問題ない場合は、Tkzincを見てください。ウェブサイトから、
Tkzinc (歴史的に Zinc と呼ばれていた) ウィジェットは、両方とも構造化グラフィックをサポートするという点で Tk Canvas に非常に似ています。Canvas と同様に、Tkzinc はグラフィカル エンティティを表示するために使用される項目を実装します。これらのアイテムは操作可能であり、バインディングをそれらに関連付けて相互作用動作を実装できます。ただし、Canvas とは異なり、Tkzinc は項目を階層構造にでき、スケーリングと回転をサポートし、項目階層のサブツリーにクリッピングを設定でき、マルチコンター カーブをサポートします。また、カラー グラデーション、アンチエイリアシング、透明度、三角形アイテムなど、OpenGL の助けを借りて高度なレンダリングも提供します。
現在、tcl プロジェクトで使用していますが、結果には非常に満足しています。tcl、perl、および python の拡張機能が利用可能です。
ウィジェットツリーをスワップインおよびスワップアウトすることなくしてはいけません。これは、Tkできれいに実行できるとは思いません。他のツールキットは、これをもう少しエレガントに行うことができます。