Tcl Tk在Scilab中显示图像

罗希特·苏里(Rohit Suri)

我想使用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文件时,该文件成功执行,但未显示任何图像窗口。

function sampletry()
    TCL_EvalFile(<path_to_tcl_file>);
endfunction

我确实知道代码已成功执行,因为当我在scilab中再次执行相同的功能时,我收到一条错误消息,指出标签.mylabel已存在于父窗口中。

有什么方法可以使用此方法或Scilab中的任何其他方法在Scilab中显示图像/视频?我正在使用OpenCV读取图像,并通过列表中的Scilab Api将其返回给Scilab。

多纳研究员

问题在于,您无法为Scilab代码提供事件循环服务,否则,从OS发出的大量与实际将窗口放在屏幕上有关的消息就永远无法传递和处理。假设您希望代码停止并等待查看完成,只需将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做到这一点最简单的方法是什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章