如何使用perl在屏幕中间打印或对齐菜单
How to print or align menu at the middle of screen using perl
我想使用 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
您可以使用 Curses::UI 包执行此操作,并且(如果您在下面使用 ncurses),处理生成的 KEY_RESIZE 输入。
在 How to get with Curses the window-size from a resized window? 中提出了类似的问题,其中接受的答案似乎与此一致。
尝试使用 stty -a
命令获取当前终端中的列数,并使用该值确定菜单的位置。 (我们可以使用 printf 来做 left/right 填充)。
打印菜单之前,每次使用stty -a
命令确定屏幕宽度,以便菜单可以相应对齐。
我想使用 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
您可以使用 Curses::UI 包执行此操作,并且(如果您在下面使用 ncurses),处理生成的 KEY_RESIZE 输入。
在 How to get with Curses the window-size from a resized window? 中提出了类似的问题,其中接受的答案似乎与此一致。
尝试使用 stty -a
命令获取当前终端中的列数,并使用该值确定菜单的位置。 (我们可以使用 printf 来做 left/right 填充)。
打印菜单之前,每次使用stty -a
命令确定屏幕宽度,以便菜单可以相应对齐。