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"
不显示任何错误,正确显示:
但是当然这不会教任何人如何使用 FFMPEG 帧速率选项,因为需要破折号。
使用反斜杠转义破折号,例如\-
只会打印反斜杠,这也不会教任何人 FFMPEG:
我也尝试过使用'
和"""
代替'''
双引号,但它们给出相同的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