Tkinter パックのジオメトリ マネージャーでウィジェットをオーバーラップするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/112263

  •  02-07-2019
  •  | 
  •  

質問

を置きたいです Canvas ウィンドウに画像を表示してから、 パック その上にウィジェットが配置されるため、キャンバスは背景として機能します。

に 2 つの状態を持たせることは可能ですか? pack マネージャー:1 つはウィジェットの 1 セット用で、もう 1 つは別のセット用ですか?

役に立ちましたか?

解決

あなたの具体的な質問に対する答えは「ノー」です。2 つの状態を持つことはできず、同じ親内で 2 つの異なる方法でパックを使用することもできません。

しかし、私があなたが達成したいと思うことは単純です。キャンバスの組み込み機能を使用して、キャンバスの一部である画像アイテムを作成し、フレームであるかのようにオブジェクトをキャンバスに詰め込みます。

画像を含むラベル ウィジェットを作成し、他のウィジェットをそのラベルにパックすることで、同様のことを実現できます。

キャンバスを使用する利点の 1 つは、画像を簡単に並べて繰り返し背景画像でキャンバス全体を埋めることができることです。これにより、ウィンドウが大きくなっても画像が引き続きウィンドウを埋め続けるようになります (もちろん、十分な大きさの元の画像を使用することもできます)。 。)

他のヒント

ブライアンの答えがおそらく最良の一般的な解決策であると思います。ただし、次も参照してください。 場所 ジオメトリマネージャー。の 場所 ジオメトリ マネージャーを使用すると、ウィジェットの正確なサイズと位置を指定できます。すぐに退屈になるかもしれませんが、仕事は完了します。

...ラベルやキャンバスを追加したかったのですが、背景を透明にする方法が見つかりませんでした。

追加の拡張機能をロードしてもよい場合は、以下を参照してください。 ツジンク. 。ウェブサイトから、

Tkzinc (以前は Zinc と呼ばれていました) ウィジェットは、どちらも構造化グラフィックスをサポートしているという点で Tk Canvas に非常に似ています。Canvas と同様に、Tkzinc はグラフィック エンティティを表示するために使用されるアイテムを実装します。これらのアイテムを操作したり、バインディングを関連付けたりして、インタラクション動作を実装できます。ただし、Canvas とは異なり、Tkzinc は階層内の項目を構造化でき、スケーリングと回転をサポートし、項目階層のサブツリーにクリッピングを設定でき、マルチ輪郭曲線をサポートします。また、カラー グラデーション、アンチエイリアス、透明度、三角形アイテムなど、OpenGL を利用した高度なレンダリングも提供します。

私は現在 tcl プロジェクトでこれを使用しており、その結果に非常に満足しています。tcl、perl、および Python の拡張機能が利用可能です。

ウィジェット ツリーを入れ替えることも必要ですが、Tk ではそれをきれいに行うことはできないと思います。他のツールキットでは、これをもう少しエレガントに行うことができます。

  • COM/VB/MFC では、ActiveX コントロールを使用してこれを行うことができます。同じ領域内で複数の ActiveX コントロールを非表示/表示できます。どのコンテナでも、子を変更することでこれを行うことができます。Windows 固有のプログラムを実行している場合は、この方法で実現できる可能性があります。
  • QT でも同様の方法でこれを行うことができます。
  • GTKの方が少し硬いです。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top