如何使用perl在屏幕中间打印或对齐菜单

时间:2015-10-16 00:32:58

标签: bash perl awk ksh

我想使用perl在屏幕中间对齐此菜单,并且还希望在屏幕中心输入。     菜单代码如下

while(1){ // 
        printf "Please select from one of expense catagories";
        printf "1 - House \n";
        printf "2 - Grocery \n";
        printf "3 - Car \n";
        printf "4 - Hospital \n";
        printf "5 - Others \n";
        printf "q - quit \n";
        my $input = <STDIN>;
        if ($input =~ /q/) {
        exit;
        }// 

我尝试使用标签但是当我调整屏幕大小时它没有正确对齐。所以想知道在屏幕上特定位置打印的方式。

目前的输出如下:

Please select from one of expense catagories
1 - House
2 - Grocery
3 - Car
4 - Hospital

2 个答案:

答案 0 :(得分:0)

你可以使用Curses :: UI包,并且(如果你在下面使用ncurses),处理生成的KEY_RESIZE输入。

How to get with Curses the window-size from a resized window? 中提出了类似的问题,其中接受的答案似乎与此一致。

答案 1 :(得分:0)

尝试使用class Button extends React.Component { constructor() { super(); this.state = { shouldWiggle: false }; } handleCallback() { this.setState({shouldWiggle: !this.state.shouldWiggle}); } render() { let cls = this.state.shouldWiggle ? 'icon-up wiggle': 'icon-up'; return ( <div> <span className='highlight'>{this.props.summary}</span> <a className='link' onClick={this.handleCallback.bind(this)} > <span ref={(c) => this.icon = c} className={cls}>ad</span> </a> </div> ); } } 命令获取当前终端中的列数,并使用该值确定菜单的位置。 (我们可以使用printf进行左/右填充。)

在打印菜单之前,请每次使用stty -a命令确定屏幕宽度,以便相应地对齐菜单。