我的代码是检查某些文件中返回的值,我将回调附加到一个按钮,按下该按钮时应根据返回值向用户显示一个对话框。 但是当代码执行时,它会返回错误消息位图“0”未定义。
代码:
#!/usr/local/bin/wish
##set command "lmstat -a -c /tools/license/dat/cadence_orbit_3x.dat -f Liberate_MX_Client | grep issued | awk {{print $11}}"
set result [exec lmstat -a -c /tools/license/dat/cadence_orbit_3x.dat -f Liberate_LX_Server | grep issued | awk {{print $11}}]
puts $result
if {$result == 0} {
button .hello -text "License Check" -command {checkLic} -bg green
} else {
button .hello -text "License Check" -command {checkLic} -bg red
}
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 5000 {destroy .dialog2}
tk_dialog .dialog2 "Liberate licenses available" info 0 OK
} else {
after 5000 {destroy .dialog2}
tk_dialog .dialog2 "No licenses available" info 0 OK
}
}
pack .hello -padx 20 -pady 10
答案 0 :(得分:1)
tk_dialog 窗口标题文本位图默认字符串字符串...
此过程是Tk脚本库的一部分。它在很大程度上被 tk_messageBox 弃用。它的参数描述了一个对话框:
窗口: 用于对话框的顶级窗口的名称。此名称的任何现有窗口都将被销毁。
标题的 要在对话框的窗口管理器标题栏中显示的文本。
文本:的 消息显示在对话框的顶部。
位图: 如果为非空,则指定位图(以适合 Tk_GetBitmap 的形式)显示在对话框的顶部,位于文本的左侧。如果这是一个空字符串,则对话框中不会显示位图。
默认: 如果这是一个大于或等于零的整数,那么它给出了按钮的索引,该按钮将成为对话框的默认按钮(最左边的按钮为0,依此类推)。如果小于零或空字符串,则不会有任何默认按钮。
字符串: 每个参数都有一个按钮。每个字符串按从左到右的顺序指定要在按钮中显示的文本。
我猜你错过了在对话框中使用的标题或文字,从而产生了你打算提供的价值因为默认属于位图插槽,这会混淆代码。添加一个额外的参数,也许是这样的(为了便于阅读,分解为两行):
tk_dialog .dialog2 "Liberate licenses available" \
"There are some licenses available; great!" info 0 OK
你的逻辑看起来有点狡猾。关于没有许可证的投诉是否应该在else
条款中?
另外,我将实际的exec
行放在自己的 的过程中,以便所有使用它的地方都具有完全相同的版本你可以肯定是正确的。它可以确保错误输入的方式,以便您可以更轻松地捕获任何错误。