Zenity 列表可以显示字符串“--option”吗?

Zenity 列表可以显示字符串“--option”吗?

Zenity 列表样式菜单是否能够显示类似的代码选项-r

我正在尝试为 FFMPEG bash 脚本制作一个简单的 GUI。这只是一个选择视频帧速率的提示。我希望 Zenity 列表列之一显示将要使用的实际 FFMPEG 选项,它将用于返回以在 FFMPEG 代码中使用,但也希望向用户教授一些 FFMPEG 语法。像这样:

#!/bin/sh

zenity --list \
    --title="Select framerate" \
    --column="ffmpeg code" --column="Framerate" --column="Description" \
    "-r 24000/1001" "23.976fps" "NTSC compatible 24fps" \
    "-r 30000/1001" "29.98fps" "NTSC compatible 30fps"

但这会给出 Zenity 错误消息:

This option is not available. Please see --help for all possible usages.

我想我知道问题是什么;Zenity 认为这-r是一个 Zenity 选项,但却无法识别它。

只需删除-之前的-r即可修复:

zenity --list \
    --title="Select framerate" \
    --column="ffmpeg code" --column="Framerate" --column="Description" \
    "r 24000/1001" "23.976fps" "NTSC compatible 24fps" \
    "r 30000/1001" "29.98fps" "NTSC compatible 30fps"

不显示任何错误,正确显示:

Zenity GUI 具有上述选项,但在“r”前面没有破折号,如“-r”

但是当然这不会教任何人如何使用 FFMPEG 帧速率选项,因为需要破折号。

使用反斜杠转义破折号,例如\-只会打印反斜杠,这也不会教任何人 FFMPEG:

Zenity GUI 具有上述选项,并且前面带有“-r”。

我也尝试过使用'"""代替'''双引号,但它们给出相同的This option is not available...错误消息。

难道 Zenity 就不能显示类似的东西吗?我知道如果我只想让列表返回代码(只是附加-r在输出的开头),那么就有办法解决这个问题,但正如我所说,我希望能够教 GUI 用户一些关于使用 FFMPEG 命令行界面的知识。有什么想法吗?谢谢。

编辑:顺便说一下,zenity --version在我的系统(Xubuntu 14.04)上返回3.8.0版本是否是问题的一部分。

答案1

您只需在字符前放置空格-,如下所示:

zenity --list \
    --title="Select framerate" \
    --column="ffmpeg code" --column="Framerate" --column="Description" \
    " -r 24000/1001" "23.976fps" "NTSC compatible 24fps" \
    " -r 30000/1001" "29.98fps" "NTSC compatible 30fps"

答案2

将数据每行写入 stdin,例如

zenity --list \
  --title="Select framerate" \
  --column="ffmpeg code" --column="Framerate" --column="Description" <<EOF
-r 24000/1001
23.976fps
NTSC compatible 24fps
-r 30000/1001 
29.98fps 
NTSC compatible 30fps
EOF

相关内容