linux 下脚本中显示对话框

手册:https://help.gnome.org/users/zenity/stable/index.html.en
不少发行版本中集成了 zenity

例子

显示一条信息 zenity --info --title "提示" --text="显示信息"

常规选项

--title=title 标题

--window-icon=icon_path 图标

--width=width 宽度

--height=height 高度

--timeout=timeout 超时 (秒)

--help-all 显示所有帮助信息

--help 显示所有帮助信息

返回值

Exit Code Description 描述
0 一般为按下确定键
1 一般为按下取消键
-1 发生了错误
5 对话框因为超时而关闭

常用例子

输入表单

zenity --forms  <# 显示 forms #> `
 --title="添加好友"  <# 标题 #> `
 --text="请输入您朋友的信息。"  <# 描述 #> `
 --separator=","  <# 输出结果分隔, 默认 | #> `
 --add-entry="名"  <# 添加一个输入框 #> `
 --add-entry="姓"  <# 添加一个输入框 #> `
 --add-entry="电子邮件"  <# 添加一个输入框 #> `
 --add-calendar="生日"  <# 添加一个日历选择器 #> `
 --forms-date-format="%Y-%m-%d"  <# 日期格式化模式 #>

# 返回 csv 格式字符串
# $LASTEXITCODE 0 按了确认, 1 按了取消

返回是否判断

zenity --question --text="同意按是,不同意按否"

输入文本

$title = zenity --entry `
--title="请输入文件标题" `
--text="请输入文件标题作为文档名称" `
--entry-text "NewProfile.txt" 
if($LASTEXITCODE -eq 0) {
    Write-Host "用户输入的标题是: $title"
} else {
    Write-Host "用户取消了输入"
}

显示进度条

zenity --progress <# 显示进度条 #> `
  --title="工作完成进度" <# 标题 #> `
  --text="开始工作" <# 描述 #> `
  --percentage=0 <# 初始百分比 #> `
  --auto-close <# 达到 100% 后自动关闭 #> `
  --pulsate <# 显示动态效果 #>

# pwsh 中工作有点复杂,它接收输入流更新进度 

$title = '工作完成进度'
$text = '开始工作'

$psi = New-Object System.Diagnostics.ProcessStartInfo
$psi.FileName = "zenity"
$psi.Arguments = "--progress --title=`"$title`" --text=`"$text`" --percentage=0 --auto-close"
$psi.UseShellExecute = $false
$psi.RedirectStandardInput = $true

$process = [System.Diagnostics.Process]::Start($psi)

Start-Sleep -Milliseconds 500

for ($i = 0; $i -le 100; $i += 10) {
    $process.StandardInput.WriteLine($i)  # 输出数值修改进度 
    $process.StandardInput.WriteLine("# 进度: $i%") # 输出 # 修改 text
    Start-Sleep -Milliseconds 500
}

$process.StandardInput.Close()
$process.WaitForExit()
上一篇
下一篇