为linux终端创建倒计时对话框菜单框?

时间:2009-08-26 06:02:44

标签: linux console-application

如何为Linux控制台创建一个对话框小部件(不是X,而是“终端”控制台),它会在可能是菜单列表或文本框的小部件旁边显示倒数秒?

理想情况下,这可能是一个独立的程序,如对话框,它提供了控制其行为的参数。

当倒计时到达0时,将返回窗口小部件的选定值。如果没有人存在(或者人更喜欢默认值),则可能存在默认值。像grub和lilo这样的启动加载器已经可以做到这一点了。我查看了对话框手册页,但找不到此功能集。

到目前为止尝试过:

dialog --timeout 30 --menu 'Menu Title' 20 60 3 'A' 'Choose A' 'B' 'Choose B' 'C' 'Choose C'已关闭,但未显示30秒计时器滴答。

dialog --pause 'Hurry!' 10 60 30 --在计时器运行时显示消息和确定/取消,但只是插页式广告,而不是用户输入。

可以组合多行,如下所示:

dialog --menu 'Menu Title' 10 60 3 'A' 'Choose A' 'B' 'Choose B' 'C' 'Choose C' --pause 'Hurry up' 10 60 30 

但是它按顺序显示窗口小部件而不是在一个页面上组合。在这里,在没有计时器的情况下回答菜单后,您会收到带有计时器的消息。

3 个答案:

答案 0 :(得分:3)

坚持使用对话框我已经解决了类似的问题,将其分成两个对话框。首先会出现一个对话框,其中显示默认值(以及可选的替代选项),并且它具有倒数计时器。用户可以按esc或按取消更改选项,或倒计时达到0,程序继续使用默认设置。如果用户点击转义,则会出现第二个对话框,允许编辑选项。我不想在我们的deb-live / clonezilla自定义操作系统版本中添加更多软件,因此我必须找到一种带对话框的方法。

dialog --title Some options to choose from, showing default --pause "\n\n Do you accept these options?:  \n  ${options_in_nice_format_for_display}" 20 60 5
[ $? -ne 0 ] && EDIT_IP=true || EDIT_IP=false

if ${EDIT_IP}; then
    dialog --editbox ${MY_OPTIONS_FILE} 20 60 2> ${EDITED_OPTIONS_FILE}
fi

为了获得更好的解决方案(我已经使用但不想在这里添加多余的代码),您可以添加一个以布尔值为条件的while循环,并允许重复编辑,直到用户满意为止。

答案 1 :(得分:2)

我建议你阅读dialog手册页。哦,你已经做了,你说呢?然后出了什么问题:

  

- 暂停文字高度宽度秒

     

暂停框会在框底部显示一个仪表。仪表指示在暂停结束前剩余的秒数。当达到超时或用户按下OK按钮(状态OK)或用户按下CANCEL按钮或Esc键时,暂停退出。

答案 2 :(得分:1)

我相信Ncurses正是您所寻找的。