2016-06-17 20 views
0

Tcl/Tkで作成したGUIを使用してScilabで画像と動画を表示したい。Tcl Tkで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 

しかし、次の.sciファイルをscilabに書き込むと正常に実行されますが、イメージウィンドウは表示されません。

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

私はScilabの中で再び同じ機能を実行したときに、私はラベル.mylabelが既に親ウィンドウ内に存在するというエラーを取得するので、私はコードが正常に実行されたことを知っています。

Scilabでこの方法や他の方法を使って画像/動画を表示できる方法はありますか?私はOpenCVを使ってイメージを読んでScilab Apiを通してScilabに返します。

答えて

0

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変数について非常に特別なものは何もありません。私たちはそれがコールバックに設定されるのを待っています。これを2回呼び出すための追加コードを追加しました(条件付きでウィジェットを作成し、.が表示されていることを確認してから最後に隠す)。私が何か分からない

wish <path_to_tcl_file> 

あなたが同じプロセスですべてを保持しない場合は、最も簡単な手法は効果的にやって、別のプログラムとしてあなたスクリプトを実行することですシラバスからそれを行う最も簡単な方法です。

+0

表示が完了するまで待つことを希望しない場合はどうすればよいですか?ウィンドウが閉じられるのを待たずにウィンドウが表示されるとすぐに、コントロールがScilabに戻るようにしたい。 –

+0

これで私を助けてください。 –

関連する問題