Tcl Tk 在 Scilab 中显示图像
Tcl Tk to show images in Scilab
我想使用 Tcl/Tk 中制作的 GUI 在 Scilab 中显示图像和视频。
Scilab 支持 Tcl/Tk :- https://help.scilab.org/docs/6.0.0/en_US/section_a10b99d9dda4c3d65d29c2a48e58fd88.html。
我制作了一个 tcl 脚本,当从终端 运行 时显示图像。
image create photo img -file <filepath>
pack [label .mylabel]
.mylabel configure -image img
然而,当我在 scilab 中写入以下 .sci 文件时,它执行成功但没有显示图像 window。
function sampletry()
TCL_EvalFile(<path_to_tcl_file>);
endfunction
我知道代码执行成功了,因为当我在 scilab 中再次执行相同的函数时,我收到一条错误消息,指出标签 .mylabel
已经存在于父 window.
有什么方法可以使用这种方法或 Scilab 中的任何其他方法在 Scilab 中显示 images/videos 吗?我正在使用 OpenCV 读取图像,然后 return 通过列表中的 Scilab Api 将其返回给 Scilab。
问题是你没有从你的 Scilab 代码中为事件循环提供服务,如果没有它,来自 OS 的一连串消息实际上将 window 放在屏幕上永远不会通过和处理。假设您希望代码停止并等待查看完成,您只需将 Tcl/Tk 代码更改为:
image create photo img -file <filepath>
if {![winfo exists .mylabel]} {
pack [label .mylabel]
}
.mylabel configure -image img
wm deiconify .
# Wait for the user to ask for the window to be closed
wm protocol . WM_DELETE_WINDOW {set done 1}
vwait done
# Process the close immediately
wm withdraw .
update
done
变量没有什么特别之处。我们只是在等待它在回调中被设置。我添加了一些额外的代码以允许您调用它两次(即有条件地创建小部件,确保显示 .
然后在最后隐藏它)。
如果您不想让所有内容都在同一个进程中,最简单的技术是 运行 您的 原始 脚本作为一个单独的程序,有效地做:
wish <path_to_tcl_file>
我不知道从 Scilab 做到这一点的最简单方法是什么。
我想使用 Tcl/Tk 中制作的 GUI 在 Scilab 中显示图像和视频。
Scilab 支持 Tcl/Tk :- https://help.scilab.org/docs/6.0.0/en_US/section_a10b99d9dda4c3d65d29c2a48e58fd88.html。
我制作了一个 tcl 脚本,当从终端 运行 时显示图像。
image create photo img -file <filepath>
pack [label .mylabel]
.mylabel configure -image img
然而,当我在 scilab 中写入以下 .sci 文件时,它执行成功但没有显示图像 window。
function sampletry()
TCL_EvalFile(<path_to_tcl_file>);
endfunction
我知道代码执行成功了,因为当我在 scilab 中再次执行相同的函数时,我收到一条错误消息,指出标签 .mylabel
已经存在于父 window.
有什么方法可以使用这种方法或 Scilab 中的任何其他方法在 Scilab 中显示 images/videos 吗?我正在使用 OpenCV 读取图像,然后 return 通过列表中的 Scilab Api 将其返回给 Scilab。
问题是你没有从你的 Scilab 代码中为事件循环提供服务,如果没有它,来自 OS 的一连串消息实际上将 window 放在屏幕上永远不会通过和处理。假设您希望代码停止并等待查看完成,您只需将 Tcl/Tk 代码更改为:
image create photo img -file <filepath>
if {![winfo exists .mylabel]} {
pack [label .mylabel]
}
.mylabel configure -image img
wm deiconify .
# Wait for the user to ask for the window to be closed
wm protocol . WM_DELETE_WINDOW {set done 1}
vwait done
# Process the close immediately
wm withdraw .
update
done
变量没有什么特别之处。我们只是在等待它在回调中被设置。我添加了一些额外的代码以允许您调用它两次(即有条件地创建小部件,确保显示 .
然后在最后隐藏它)。
如果您不想让所有内容都在同一个进程中,最简单的技术是 运行 您的 原始 脚本作为一个单独的程序,有效地做:
wish <path_to_tcl_file>
我不知道从 Scilab 做到这一点的最简单方法是什么。