サンプルの結果、ラボフレームにチェックボタンを追加する方法、チェックボタンを選択するとフレームが有効になります。ありがとう! samplelabelframeにチェックボタンを追加しますか?
答えて
、私はまだどのように説明があるべきことを考えていましたそれをやる。私がそれをやり遂げる時、ジミーはすでにそのような説明を加えていました。とにかく私の提案は役に立つと思って投稿しています。
この回答は、「内容を有効にするLabelframes」ボタンの下で、http://wiki.tcl-lang.org/20054ページのJeremy Cowgarの例に部分的に基づいています。私は、コードを少し簡略化し、再構成し、一般化しました。うまくいけばバグを導入しないでください。コードを試しましたが、徹底的にテストしませんでした。
私は、この例では(名前空間tk
で)「クラシック」ウィジェットを使用している:ちょうどテーマにウィジェットを取得する(ttk::labelframe
、などのように)ttk
に名前空間を変更。オプションやサブコマンドが異なるため、より多くの変更が必要になることもありますが、少なくともこの例の範囲では同じ動作をします。
最初の目的は、有効になるlabelframe
を設定することです。これは、-labelwidget
オプションを設定することによって、ラベルウィジェットとしてcheckbutton
を取得します。チェックボタンは、グローバル変数と、プロシージャを呼び出すコマンドスクリプトを取得します。のみlabelframeは(pack
、grid
または何を使用して)管理する必要がある、それは自分自身でチェックボタンを管理します。チェックボタンは.greeter
の子になっている可能性がありますが、この方法では、ラベルフレーム内のウィジェットとは区別されます。
tk::labelframe .greeter
tk::checkbutton .greeterEnabler -text {Say Hello} -variable greeterEnabled -command greeterEnablerAction
.greeter configure -labelwidget .greeterEnabler
pack .greeter -fill x -expand yes
proc greeterEnablerAction {} {
if {$::greeterEnabled} {
set state normal
} else {
set state disabled
}
foreach child [winfo children .greeter] {
$child configure -state $state
}
}
labelframeはウィジェットで満たされていますが、この例では2つだけです。それらは、ウィンドウフレームの子になるように作られています。つまり、ウィンドウパスは.greeter
で始まります。
set greeterName World
tk::entry .greeter.name -textvariable greeterName
tk::button .greeter.button -text {Do It} -command {puts "Hello, $greeterName"}
labelframeの初期状態が設定されています。プロシージャgreeterEnablerAction
は、invoke
を使用して呼び出される代わりに、直接呼び出された可能性があります。
set greeterEnabled 1
.greeterEnabler invoke
labelframeの子は明示的に管理する必要があります。labelframeから独立している
pack {*}[winfo children .greeter] -fill x
ウィジェットを追加することもできます。
tk::button .bt2 -text Exit -command exit
pack .bt2 -fill x -expand yes
再び完全なプログラム(Tk
パッケージには、コードがTkで実行された場合に必要とされている必要はありません。このような)wish
として-enabledシェル:
package require Tk
# set up the labelframe with a checkbutton as enabler
tk::labelframe .greeter
tk::checkbutton .greeterEnabler -text {Say Hello} -variable greeterEnabled -command greeterEnablerAction
.greeter configure -labelwidget .greeterEnabler
pack .greeter -fill x -expand yes
proc greeterEnablerAction {} {
if {$::greeterEnabled} {
set state normal
} else {
set state disabled
}
foreach child [winfo children .greeter] {
$child configure -state $state
}
}
# fill it with widgets
set greeterName World
tk::entry .greeter.name -textvariable greeterName
tk::button .greeter.button -text {Do It} -command {puts "Hello, $greeterName"}
set greeterEnabled 1
.greeterEnabler invoke
pack {*}[winfo children .greeter] -fill x
# this button is independent of the labelframe
tk::button .bt2 -text Exit -command exit
pack .bt2 -fill x -expand yes
ドキュメント: button (widget)、 checkbutton (widget)、 exit、 foreach、 grid、 if、 labelframe (widget)、 pack、 package、 proc、 puts、 set、 winfo、 {*} (syntax)
素晴らしい!あなたの非常に網羅的で有用な説明をありがとう!それは本当に私に多くの利益をもたらす。 – Jimmy
ドナルのアドバイスのおかげでは、下の私の解決策をリスト:私はこの質問と、彼はそれを解決したことにジミーさんのコメントを見たとき
frame .f
labelframe .f.lf
checkbutton .f.lf.cb -text sample
label .f.lf.lb -text "This is for test"
.f.lf configure -labelwidget .f.lf.cb
pack .f
pack .f.lf
pack .f.lf.lb
- 1. 「もし」「それから」チェックボタン
- 2. Tkinter(またはttk)にtextvariableを使用するLabelFrame
- 3. GTK:チェックボタン
- 4. alt値を動的に追加/追加しますか?
- 5. Tkinter:チェックボタンとリスト
- 6. チェックボタンの値jquery
- 7. UIScrollViewにUIButtonを追加し、UIScrollViewをUIViewに追加します。
- 8. 条件を追加し、pandasデータフレームを追加しますか?
- 9. Tkinter/python:すべてのチェックボタンを選択するチェックボタンを作成する方法
- 10. tkinter LabelFrameにウィジェットが添付されていません
- 11. ウェブページにperlを追加しますか?
- 12. プラグインをejsに追加しますか?
- 13. MKOverlayRendererにCALayerを追加しますか?
- 14. SlickGridにカスタムボタンを追加しますか?
- 15. イベントをクラスメソッドに追加しますか?
- 16. カスタムスクリプトをScriptManagerに追加しますか?
- 17. jQuery.ajaxにdataTypesを追加しますか?
- 18. ページカールアニメーションをNSViewに追加しますか?
- 19. "this"をイベントリスナーに追加しますか?
- 20. ジェスチャービルダーをアプリに追加しますか?
- 21. コアテキストにハイフネーションを追加しますか?
- 22. .htaccessをキャッシュマニフェストに追加しますか?
- 23. DynamicResourceにスペースを追加しますか?
- 24. アンドロイドスタジオプロジェクトにライブラリを追加しますか?
- 25. req.validationErrors()にカスタムエラーを追加しますか?
- 26. オペレータをサードパーティタイプに追加しますか?
- 27. ドロップダウンボックスにオプションを追加しますか?
- 28. iframeにjavascriptを追加しますか?
- 29. ドメインサービスクラスにイベントを追加しますか?
- 30. イメージをブートストラップに追加しますか?
私は「-labelwidgetを使用して、それを解決しました" – Jimmy
これは正しいアプローチです。答えとして書いてください。それは将来の他の人々を助けるでしょう。 –