使用tcl fcopy

时间:2016-03-07 14:20:37

标签: copy progress-bar tcl tk

我有一个基于Tcl / Tk的应用程序,我需要将一些大文件从Windows发送到vm。我正在使用fcopy,它工作正常。但由于文件大小可能很大(以GB为单位),因此应用程序将被阻止1分钟或更长时间。由于进行操作取决于文件的副本,我不能使其成为非阻塞/后台副本。

因此,我想要显示一个进度条,让用户知道操作正在进行中并让他们猜测他们的等待时间(我不打算自己计算,用户可能会自己猜测)。实现这个目的的方法是什么?我得到了一个写入的页面"以块的形式复制文件并更新界面"但没有得到任何参考。

他们有更好的选择吗?请指导。

1 个答案:

答案 0 :(得分: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个字节。