首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消zenity按钮使用

取消zenity按钮使用
EN

Ask Ubuntu用户
提问于 2021-01-21 06:45:35
回答 2查看 1.4K关注 0票数 0

所以一个非常直截了当的问题,在zenity有两个按钮在每页,ok和cancel。使用我的脚本,我设法将zenity代码分配给一个变量,在这个变量中,我可以为我的日历选择一个日期。我想使用取消按钮为我的议程,所以我重新命名,但我不知道如何使它工作!谢谢

代码语言:javascript
复制
#!/bin/bash
calendarinput=$(zenity --calendar \
--title "Scheduler" \
--text "Pick a date" \
--ok-label "Done" --cancel-label "Agenda" \
--date-format "%A %d/%m/%y")

agenda+="$calendarinput"
unset calendarinput
calendarinput="Done"

if [ "$calendarinput"="Done" ];then
    remind=$(zenity --entry)
    agenda+="$remind\n"
fi

zenity --info \
--text "$agenda"

这是我的script.There中仅有的一个函数,是这个菜单之前的另一个列表菜单。

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2021-01-21 07:28:36

您可以从特殊参数$?中的按钮中找到返回代码,该参数包含上次执行的命令的退出代码。它可以是0、1或5,这取决于用户是按OK、Cancel还是timeout。

代码语言:javascript
复制
#!/bin/bash

calendarinput=$(zenity --calendar \
--title "Scheduler" \
--text "Pick a date" \
--ok-label "Done" --cancel-label "Agenda" \
--date-format "%A %d/%m/%y")

ret=$?

if ((ret==0)); then
    echo "Done"
else
    echo "Agenda"
fi

if语句中的表达式需要用空格分隔:

代码语言:javascript
复制
if [ "$calendarinput" = "Done" ]; then

(它也总是计算为真,这使得它有点不必要)。

票数 1
EN

Ask Ubuntu用户

发布于 2022-06-24 13:19:58

使用case esac而不是if设置

代码语言:javascript
复制
zenity --whatever
case $? in
    0) whatever.script #this is pressing ok
    ;;
    1) $1 # this is pressing cancel
    ;;
    *) $1 #this is closing window etc $1 will kill process
    ;;
esac
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1309740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档