tcl暂停并等待按键继续

use*_*068 4 key pressed tcl

我正在寻找tcl中的一种方法来暂停脚本(例如在一些带有"puts"的输出之后)并等待从用户按下的键,然后继续输出剩余的文本.

Hai*_* Vu 11

你只是gets用来从stdin读取:

proc pause {{message "Hit Enter to continue ==> "}} {
    puts -nonewline $message
    flush stdout
    gets stdin
}

pause "Hurry, hit enter: "; # Sample usage 1
pause;                      # Sample usage 2, use default message
Run Code Online (Sandbox Code Playgroud)


gle*_*man 5

感谢 Hai Vu 的回答,如果您使用的是类 Unix 系统 stty

proc anykey {{msg "Hit any key: "}} {
    set stty_settings [exec stty -g]
    exec stty raw -echo
    puts -nonewline $msg
    flush stdout
    read stdin 1
    exec stty $stty_settings
    puts ""
}
puts 1
anykey
puts 2
Run Code Online (Sandbox Code Playgroud)

Tcl wiki 上详细讨论的链接:Reading a single character from the keyboard using Tcl