微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Zenity 文件选择显示

如何解决Zenity 文件选择显示

所以我试图在 zenity 中做一个删除功能。我设法让用户输入他想要的路径,然后我想显示其中存在的所有文件。我发现了如何做到这一点,我知道它可以工作,但在 zenity 中却没有。下一个窗口(文件选择)没有弹出,我的程序回到菜单。谢谢这是我的代码。谢谢你的帮助和时间!

#!/bin/bash

function Ddate()
{
    zenity --info \
    --title "Date and Time" \
    --text "Today is $(date)"
}

function Dcalendar()
{
    zenity --forms \
    --title "Scheduler" \
    --text "Pick a date" \
    --add-calendar "Calendar" \
    --add-entry "Reminder"
}

function Ddelete()
{   
    directory=$(zenity --entry \
    --text "Enter a path" \
    --title "Delete" )
    if [ -z "$directory" ];then
    directory=$ pwd
    else
        if [ -d "$directory" ];then
            zenity --file-selection --filename=$(directory)
        fi 
    fi

}

while true;
do
choice="$(zenity --height 275 --width 450 \
--list \
--title="" \
--column="Function" --column="Description" \
    Date 'display the actual date and time.' \
    Calendar 'display an interactive calendar.' \
    Delete 'Let you delete a file.' \
    Exit 'To quit this script.')"

case $choice in
    Date) Ddate;;
    Calendar) Dcalendar;;
    Delete) Ddelete;;
    Exit) break;;

esac

done

解决方法

为了解决我的问题,我理解 $?转义码。在每个窗口 $?分别控制取值 0 和 1 的确定和取消按钮。 在我的程序中,我清除了 $?首先因为之前的 window ,已经可以设置一个值了,设置一个变量 ret 为 $?意思是如果有人按确定或取消它会继续到下一个窗口或返回到根窗口。

function Ddelete()
{   
    directory=$(zenity --entry \
    --text "Enter a path" \
    --title "Delete" )
    if [ -z "$directory" ];then
    directory=$ pwd
    else
        if [ -d "$directory" ];then
            clear $?
            Spath=$(zenity --file-selection --filename=$(directory))
            ret=$?
        fi 
    fi

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。