2016-03-07 27 views
0

我有一個基於Tcl/Tk的應用程序,我需要將一些大文件從Windows發送到虛擬機。我正在使用fcopy,它工作正常。但由於文件大小可能很大(以GB爲單位),因此應用程序被阻止1分鐘或更長時間。由於後續操作取決於文件的副本,因此我無法將其作爲非阻止/後臺副本。在使用tcl複製大文件的過程中添加進度條fcopy

因此,我想展示一個進度條,讓用戶知道操作正在進行,並讓他們猜測他們的等待時間(我不打算自己計算這個,用戶可以自己猜測) 。實現這個目標的方法是什麼?我得到了一個頁面,寫着「以塊形式複製文件並更新界面」,但沒有得到更多的參考資料。

他們有更好的選擇嗎?請指導。

回答

0

還有就是fcopy文檔中的一個例子:

proc CopyMore {in out chunk bytes {error {}}} { 
    global total done 
    incr total $bytes 
    if {$error ne "" || [eof $in]} { 
     set done $total 
     close $in 
     close $out 
    } else { 
     # Add progress bar update here 
     fcopy $in $out ‐size $chunk \ 
       ‐command [list CopyMore $in $out $chunk] 
    } 
} 
set in [open $file1 rb]; # Wherever this comes from 
set out [open $file2 wb]; # Wherever it is going to 
set chunk 1024 
set total 0 
fcopy $in $out ‐size $chunk \ 
     ‐command [list CopyMore $in $out $chunk] 
vwait done 

所有你需要做的就是添加了進度條的更新到那裏,你已經得到了total號碼複製到目前爲止已經字節。

+0

所以我必須改變大小參數值chunk size = 1024在兩端,對不對?順便說一句,我在發送和接收端使用類似的功能,如此鏈接(http://wiki.tcl.tk/3094)。 –