如何获取Zenity中不同表单的值

4

我希望能够获取zenity表单中用户输入的IP地址值,以便使用ffmpeg进行视频流处理。我已经尝试了多种示例,如列表、表单等。

zenity --forms --title="Add Friend" --text="Enter Multicast address" --separator="," --add-entry="IP address" --add-entry="PORT" 

或者

if zenity --list --title="Record Video Stream"  --text "Enter the Multicast IP address and port of each of the video stream" --column "Video IP" --print-column=2 --multiple --column "PORT" --editable ip="0.0.0.0" port="2002"
1个回答

8
zenity的输出是通过--separator字符分隔的输入文本。退出代码表示是否接受(即选择了OKCancel)。

例如(在bash中):

OUTPUT=$(zenity --forms --title="Add Friend" --text="Enter Multicast address" --separator="," --add-entry="IP address" --add-entry="PORT")
accepted=$?
if ((accepted != 0)); then
    echo "something went wrong"
    exit 1
fi

ip=$(awk -F, '{print $1}' <<<$OUTPUT)
port=$(awk -F, '{print $2}' <<<$OUTPUT)

这段代码可将zenity中的IP地址保存到ip变量中,将端口从zenity表单中保存到port变量中。

第二个例子比较复杂,它使用了“editable”模板,这意味着如果数据未更改,您将不会得到任何输出,但它遵循与前面示例类似的模式。现在,因为您指定了--print-column=,所以它只显示输出中的该列。不幸的是,--list用于从项目列表中选择一个或多个行,编辑多行将起作用,但您必须选择每一行才能获取该行的输出,即使在更改数据后也是如此。在这种情况下,由于您未指定--separator选项,因此使用默认分隔符|

在第二种情况下,使用可编辑和列表输入并不是从用户输入角度设计列表的目的。


你知道是否可以在代码内部设置表单的值吗?@Petesh - user573014
当有多个选项时(即--forms输入样式),它不支持为字段指定默认输入值(就我所知)。 如果您只有一个输入框,则可以使用zenity --entry --text="对话框文本" --entry-text="默认文本" - Anya Shenanigans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接