ライセンスの可用性に基づいてフレームの色を変更するためのtclスクリプトを作成しています。ライセンスが利用可能な場合は、赤色の青色が表示されます。これは、procごとにtclを使用して周期的に実行され(フレームの色は可用性に基づいて変更されます)。条件チェックに基づいてフレームの色を変更する
しかし、私はパックを再描画することを忘れてしまいましたが、連続したループでウィジェットは既に存在しています。私はサポートされていないので、フレームカラーのconfigureコマンドを使用することができません。 解決策を提案してください。
#!/tools/tcl/tcl8.6/bin/tclsh -f
package require Tk
proc checkLic {} {
set val [exec lmstat -a -c /tools/license/dat/cadence_orbit_3x.dat -f Liberate_MX_Client | grep issued | awk {{print $11}}]
puts $val
if {$val == 0} {
after 1000
pack forget .high
after 1000
frame .high -width 8 -height 30 -background blue
pack .high -side right
} else {
after 1000
pack forget .high
after 1000
frame .high -width 8 -height 30 -background red
pack .high -side right
}
}
proc every {ms body} {
eval $body
after $ms [info level 0]
}
every 1000 {checkLic}
パックは忘れてはウィジェットを破壊しない、それだけで、ウィンドウから削除します。同じウィジェットを複数回忘れて再管理することができます。 –
なぜコールバックの中で '' 1000 'の後にまっすぐに置いていますか? –
あなたの問題をうまく解決するために私の答えを更新しました。 –