gpt4 book ai didi

powershell - 创建带有框字符的控制台菜单

转载 作者:行者123 更新时间:2023-12-03 01:18:25 25 4
gpt4 key购买 nike

我已经构建了一个菜单,但我想将其格式化为如下所示:

菜单标题位于框中,选项位于框中。

我从 http://en.wikipedia.org/wiki/Box-drawing_character 中找到了方框字符

╔═╗║║╚═╝

我想使用字符串的长度属性来绘制水平框线。

最佳答案

我意识到这已经过时了,但似乎有很多来自志同道合的人的流量,他们想要比 System.Management.Automation.Host.ChoiceDescription 更好的菜单选项。我正在寻找类似的东西并发现this closed question这启发我编写了一个菜单系统,该系统用一个适应最长选择长度或菜单标题的框包围着选项:

┌Choose an option┐
│first │
│second option │
│third │
└────────────────┘

该脚本仅适用于 Powershell 控制台,不适用于 ISE。使用箭头键将以反白方式突出显示所选内容。按 Enter 键将返回它。

function Show-SimpleMenu ([array]$MenuOptions, [string]$Title ='Choose an option'){
$maxLength = ($MenuOptions | Measure-Object -Maximum -Property Length).Maximum #get longest string length
If($maxLength -lt $Title.Length){$maxLength = $Title.Length}
$highlighted = 0
$MenuTop = [Console]::CursorTop
Do{
[Console]::CursorTop = $MenuTop
Write-Host "┌$($Title.PadRight($maxLength,'─'))┐"
for ($i = 0; $i -lt $MenuOptions.Length;$i++) {
Write-Host "│" -NoNewLine
if ($i -eq $highlighted) {
Write-Host "$(([string]$MenuOptions[$i]).PadRight($maxLength,' '))" -fore $host.UI.RawUI.BackgroundColor -back $host.UI.RawUI.ForegroundColor -NoNewline
} else {
Write-Host "$(([string]$MenuOptions[$i]).PadRight($maxLength,' '))" -fore $host.UI.RawUI.ForegroundColor -back $host.UI.RawUI.BackgroundColor -NoNewline
}
Write-Host "│"
}
Write-Host "└$('─' * ($maxLength))┘"
$keycode = [Console]::ReadKey($true)
If ($keyCode.Key -eq [ConsoleKey]::UpArrow -and $highlighted -gt 0 ) {$highlighted--}
If ($keycode.Key -eq [ConsoleKey]::DownArrow -and $highlighted -lt $MenuOptions.Length - 1) {$highlighted++}
}While($keyCode.Key -ne [ConsoleKey]::Enter -and $keycode.Key -ne [ConsoleKey]::Escape )
If($keyCode.Key -eq [ConsoleKey]::Enter){ $MenuOptions[$highlighted] }
}

Show-SimpleMenu @('first','second option','third')

还有一个multi-select version on GitHub允许使用空格键选择多个选项。

关于powershell - 创建带有框字符的控制台菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22773684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com