4

私はradiobuttons(たとえば、選択肢1と2の)セットを持っており、ユーザーの選択に基づいてウィジェットを表示する必要があります。たとえば、彼らが1を選択した場合、私は彼らlabelframeにいくつかのradiobuttons;を表示します。一方、2を選択した場合はlabelframe、いくつかのを表示しますbuttons。いずれの場合も、結果のコンテンツはウィンドウの同じ領域に表示されます。

このような複数のウィジェット表示を切り替える良い方法は何ですか?

この答えpanedwindowから、とを使用する必要があると思いframesますが、異なるコンテンツをどのように切り替えるかはよくわかりません。

4

2 に答える 2

3

ペインウィンドウを使用する場合は、フレームを削除し、新しいフレームを追加してフレームを置き換えることで、コンテンツペインを切り替えることができるはずです。ttk :: panedwindowのおよび/コマンドの説明については、このマニュアルページを参照してください。forgetaddinsert

サンプルコード:

package require Ttk

# Create a panedwindow
ttk::frame .f
ttk::panedwindow .f.pane -orient vertical

# Create three panes
ttk::frame .f.pane.one -height 50 -width 50
ttk::label .f.pane.one.l -text "Number one"
pack .f.pane.one.l

ttk::frame .f.pane.two -height 50 -width 50
ttk::label .f.pane.two.l -text "Number two"
pack .f.pane.two.l

ttk::frame .f.pane.three -height 50 -width 50
ttk::label .f.pane.three.l -text "Number three"
pack .f.pane.three.l

# Add frames one and two to the panedwindow
.f.pane add .f.pane.one
.f.pane add .f.pane.two

pack .f.pane -expand 1 -fill both
pack .f -expand 1 -fill both

# Replace pane one with pane three
.f.pane insert 1 .f.pane.three
.f.pane forget 2 

このコードは、自分のニーズに合わせて調整できます。必要になる可能性のあるすべてのビューを作成し、必要に応じてそれらを入れ替えるだけです。

于 2010-09-03T20:33:38.437 に答える
1

本当に簡単な方法は、データセットごとに1つのフレームを使用することです。gridそれらをすべて同じ行と列に配置するために使用します。次に、フレームとその子をスタック順の一番上に上げるだけです。

別のテクニックも同じように始まりますが、raiseを使用する代わりに、grid remove現在表示されているフレームで実行してから、表示されるフレームで実行しgridます。を使用するgrid removeと、gridすべての設定が記憶されるため、次に表示するときにすべてのオプションを再度指定する必要はありません。

于 2010-09-03T21:07:24.883 に答える