2017-07-13 13 views
0
ためvwait方法

私の目標は、この(簡体字)コードのようなものを行うことです:変数はinp_file_name処理中は2つの変数

package require MyProcessor 0.1 
package require Tk 

proc Open_file {} { 
    MyProcessor::Process 
} 
# Upper frame 
frame .top 
# Input file name 
set inp_file_name "Input file name (press button -->)" 
label .top.lbInpFileName 
button .top.btInpFile -text "..." -command Open_file 
grid .top.lbInpFileName .top.btInpFile 
# Two edits 
text .inpTxt 
text .outTxt 
grid .inpTxt 
grid .outTxt 

vwait ::MyProcessor::inp_file_name 
vwait ::MyProcessor::lines 

そしてmyprocessor.tcl

proc Process {} { 
    set inp_file_name [[tk_getOpenFile -initialdir "./"] 
    read_lines 
    set lines [Proceed $inp_lines] 
} 

中や線が変化しており、これらの変更をウィジェットに表示したい。これを行う方法は何ですか?

答えて

0

これは上記の例の動作プロトタイプです。重大な問題は、ラベルの-textvariable属性がグローバル変数inp_file_nameに設定されていないことです。テキストの行は、MyProcessor :: Processプロシージャ内のテキストウィジェットに挿入されます。

namespace eval MyProcessor { 

    proc Process {} { 
     set file_name [tk_getOpenFile -initialdir "./"] 
     set h [open $file_name r] 
     set lines [read $h] 
     .inpTxt insert end $lines 
     close $h 
     return $file_name 
    } 
} 

proc Open_file {} { 
    global inp_file_name 
    set inp_file_name [MyProcessor::Process] 
} 
# Upper frame 
frame .top 
grid .top 
# Input file name 
set inp_file_name "Input file name (press button -->)" 

# Set the textvariable attribute to the global inp_file_name variable. 
label .top.lbInpFileName -textvariable inp_file_name 
button .top.btInpFile -text "..." -command Open_file 
grid .top.lbInpFileName .top.btInpFile 
# Two edits 
text .inpTxt 
text .outTxt 
grid .inpTxt 
grid .outTxt 
+0

Iは、(ファイルmyprocessor.tclモジュールする処理を確定する)、処理からGUIを分離しようとしたので、私は、モジュール内の変数の状態における方法の外観を検索します。 – Boris