2014-01-26 20 views
3

我想以zenity(用戶寫的Ipaddress值)的形式獲取表單的值,以便使用ffmpeg進行一些視頻流,我嘗試了幾個例子,如列表,表單,..等如何在zenity中獲取不同形式的值

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

OR

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" 

回答

4

zenity的輸出是被輸入的文本,由--separator字符分隔。退出碼是否被接受(即選擇了OK,Cancel)。

因此,例如(在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形式進入端口變量端口。

第二個例子稍微複雜一些,它使用'editable'模板,這意味着如果數據不變,則不會得到任何輸出,但它遵循與前面示例類似的模式。現在,因爲你說--print-column=,它只在輸出中顯示該列。不幸的是,--list用於從項目列表中選擇一行或多行。編輯多行可以工作,但是可以選擇每一行以獲取該行的輸出,即使在更改數據後也是如此。在這種情況下,因爲您沒有指定--separator選項,所以使用默認分隔符|

在第二種情況下,使用可編輯和列表輸入並不真正是從用戶輸入角度設計的列表。

+0

你知道是否可以在代碼中設置表單的值嗎? @Petesh – user573014

+0

當有多個選項(即'--forms'輸入樣式)時,它不支持指定字段的默認輸入值(盡我所知)。如果你只有一個輸入框,那麼你可以使用'zenity --entry --text =「對話框文本」--entry-text =「默認文本」 – Petesh

相關問題