TCL暂停并等待按键按下继续



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

你只需使用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
感谢

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
链接到Tcl维

基上的彻底讨论:使用Tcl从键盘读取单个字符

Windows 的潜在解决方案:

exec -ignorestderr [file join $env(windir) system32 cmd.exe] /c pause

这也注意到非 ASCII 按键(例如箭头键、Esc 等(。

另一个解决方案是Windows上的原始模式以上多纳尔研究员 (感谢您的链接!(,可以总结为这两行代码:

twapi::modify_console_input_mode stdin -lineinput 0 -echoinput 0
read stdin 1

这不会注意到 Esque、箭头键等(稍后可能需要恢复控制台输入模式(。

相关内容

  • 没有找到相关文章

最新更新