带有两个按钮但没有文本输入的 Zenity 对话框窗口

Rem*_*i.b 3 bash user-interface zenity

我想创建一个带有两个按钮的 zenity 对话框窗口,仅作为用户输入。

下面创建一个带有两个按钮的窗口,但有一个文本输入空间

zenity --entry --title="" --text "Choose A or B" --ok-label="B" --cancel-label="A"
Run Code Online (Sandbox Code Playgroud)

下面创建一个只有一个按钮的窗口

zenity --info --title="" --text "Choose A or B" --ok-label="B"
Run Code Online (Sandbox Code Playgroud)

tmt*_*tmt 5

--question是您正在寻找的:

zenity --question \
--title="" \
--text "Choose A or B" \
--ok-label="B" \
--cancel-label="A"
Run Code Online (Sandbox Code Playgroud)

您也可以尝试:

zenity --question \
--text="Choose A or B" \
--switch \
--extra-button "A" \
--extra-button "B"
Run Code Online (Sandbox Code Playgroud)

这会自动生成一个对话框,其中只有两个额外的按钮。(--switch抑制默认的“确定”和“取消”按钮)


小智 5

至少最新版本的 zenity 有一个 --extra-button 标志。

结合退出代码的值和stdout的内容,代码可以弄清楚用户做了什么。

例如:

while true; do
  ans=$(zenity --info --title 'Choose!' \
      --text 'Choose A or B or C' \
      --ok-label A \
      --extra-button B --extra-button C \
      --timeout 3)
  rc=$?
  echo "${rc}-${ans}"
done
Run Code Online (Sandbox Code Playgroud)

结果如下所示:

# timeout
5-
# ESC key
1-
# A button
0-
# B button
1-B
# C button
1-C
Run Code Online (Sandbox Code Playgroud)

请注意,上述操作与其他对话框类似,但某些组合可能会令人惊讶。一定要试验和处理各种不同的用户交互。