Как сделать работу в Zenity?

Я пишу простой базовый сценарий bash (начиная с #! /bin/bash, формат файла - .sh), и я пытаюсь сделать работу с баром:

#!/bin/bash echo "You are running in LXDE mode. Answer 'yes' or 'no' on the following question to continue (or not) in LXDE mode." zenity --question --text='Do you want to continue in LXDE mode?' --ok-label=Yes --cancel-label=No echo "Please enter your username and password to continue because the following command needs root privileges." zenity --password --username echo "Please enter today's date:" zenity --calendar --text="Please enter today's date:" echo "Please enter your name:" zenity --entry --text='Please enter your name on the text entry below:' echo "Analyzing data..." zenity --info --text='Now begin analyzing data. If it takes more than 40 seconds, click on "Cancel".' zenity --progress --title='Analyzing data...' --pulsate

Я попытался сделайте его перемещением от 0% до 100%, и ничего не произошло. Он застрял на 0%. Я также попытался сделать его пульсирующим, используя опцию --pulsate, все еще на 0% ничего не делая.

Кто-нибудь может мне помочь? Любая помощь будет оценена.

2
задан 7 July 2017 в 04:10

6 ответов

Документы Zenity имеют небольшой фрагмент кода, который должен делать именно то, что вы ищете.

#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
  --title="Update System Logs" \
  --text="Scanning mail logs..." \
  --percentage=0

if [ "$?" = -1 ] ; then
        zenity --error \
          --text="Update canceled."
fi

Сначала попробуйте просто скопировать код, который есть, и запустить его и подтвердить, что он работает как

Если ваш индикатор прогресса застрял на нуле, обязательно обходите любые разделы скрипта, которые могут быть висящими, и заставляя вас думать, что это на самом деле work!

Изменить: Как указано в ответе ниже, причина, по которой он не работает, заключается в том, что зенит ожидает, что прогресс будет отражен в нем, как в примере кода.

4
ответ дан 22 May 2018 в 20:58
  • 1
    Это скорее комментарий, чем ответ, но, возможно, у вас недостаточно отзывов, чтобы оставлять комментарии. Таким образом, я продолжу, чтобы дать вам еще 10 очков - не потому, что это хороший ответ, а потому, что это хороший комментарий. – WinEunuuchs2Unix 1 July 2017 в 19:44
  • 2
    Я получаю Запрещенный 403 на этой странице: / – that other guy 1 February 2018 в 01:36
  • 3
    Ты прав. Исправлено, я думаю. – Bujiraso 10 February 2018 в 02:48

Документы Zenity имеют небольшой фрагмент кода, который должен делать именно то, что вы ищете.

#!/bin/sh ( echo "10" ; sleep 1 echo "# Updating mail logs" ; sleep 1 echo "20" ; sleep 1 echo "# Resetting cron jobs" ; sleep 1 echo "50" ; sleep 1 echo "This line will just be ignored" ; sleep 1 echo "75" ; sleep 1 echo "# Rebooting system" ; sleep 1 echo "100" ; sleep 1 ) | zenity --progress \ --title="Update System Logs" \ --text="Scanning mail logs..." \ --percentage=0 if [ "$?" = -1 ] ; then zenity --error \ --text="Update canceled." fi

Сначала попробуйте просто скопировать код, который есть, и запустить его и подтвердить, что он работает как

Если ваш индикатор прогресса застрял на нуле, обязательно обходите любые разделы скрипта, которые могут быть висящими, и заставляя вас думать, что это на самом деле work!

Изменить: Как указано в ответе ниже, причина, по которой он не работает, заключается в том, что зенит ожидает, что прогресс будет отражен в нем, как в примере кода.

4
ответ дан 18 July 2018 в 10:50

Документы Zenity имеют небольшой фрагмент кода, который должен делать именно то, что вы ищете.

#!/bin/sh ( echo "10" ; sleep 1 echo "# Updating mail logs" ; sleep 1 echo "20" ; sleep 1 echo "# Resetting cron jobs" ; sleep 1 echo "50" ; sleep 1 echo "This line will just be ignored" ; sleep 1 echo "75" ; sleep 1 echo "# Rebooting system" ; sleep 1 echo "100" ; sleep 1 ) | zenity --progress \ --title="Update System Logs" \ --text="Scanning mail logs..." \ --percentage=0 if [ "$?" = -1 ] ; then zenity --error \ --text="Update canceled." fi

Сначала попробуйте просто скопировать код, который есть, и запустить его и подтвердить, что он работает как

Если ваш индикатор прогресса застрял на нуле, обязательно обходите любые разделы скрипта, которые могут быть висящими, и заставляя вас думать, что это на самом деле work!

Изменить: Как указано в ответе ниже, причина, по которой он не работает, заключается в том, что зенит ожидает, что прогресс будет отражен в нем, как в примере кода.

4
ответ дан 24 July 2018 в 19:39

Способ отображения zenity для отображения индикаторов выполнения - захват ваших команд echo из вашего скрипта bash с помощью команды перенаправления | (pipe) (символ).

Например, вы можете попробовать, что я снял с форумов Ubuntu:

#!/bin/bash

# Force Zenity Status message box to always be on top.


(
# =================================================================
echo "# Running First Task." ; sleep 2
# Command for first task goes on this line.

# =================================================================
echo "25"
echo "# Running Second Task." ; sleep 2
# Command for second task goes on this line.

# =================================================================
echo "50"
echo "# Running Third Task." ; sleep 2
# Command for third task goes on this line.

# =================================================================
echo "75"
echo "# Running Fourth Task." ; sleep 2
# Command for fourth task goes on this line.


# =================================================================
echo "99"
echo "# Running Fifth Task." ; sleep 2
# Command for fifth task goes on this line.

# =================================================================
echo "# All finished." ; sleep 2
echo "100"


) |
zenity --progress \
  --title="Progress Status" \
  --text="First Task." \
  --percentage=0 \
  --auto-close \
  --auto-kill

(( $? != 0 )) && zenity --error --text="Error in zenity command."

exit 0

Если вы перейдете по ссылке на Ubuntu Forums, вы можете прочитать обсуждение этого скрипта. Если после этого у вас еще есть вопросы, пожалуйста, спросите через комментарий ниже, и я сделаю все возможное, чтобы ответить им за вас.

2
ответ дан 22 May 2018 в 20:58

Способ отображения zenity для отображения индикаторов выполнения - захват ваших команд echo из вашего скрипта bash с помощью команды перенаправления | (pipe) (символ).

Например, вы можете попробовать, что я снял с форумов Ubuntu:

#!/bin/bash # Force Zenity Status message box to always be on top. ( # ================================================================= echo "# Running First Task." ; sleep 2 # Command for first task goes on this line. # ================================================================= echo "25" echo "# Running Second Task." ; sleep 2 # Command for second task goes on this line. # ================================================================= echo "50" echo "# Running Third Task." ; sleep 2 # Command for third task goes on this line. # ================================================================= echo "75" echo "# Running Fourth Task." ; sleep 2 # Command for fourth task goes on this line. # ================================================================= echo "99" echo "# Running Fifth Task." ; sleep 2 # Command for fifth task goes on this line. # ================================================================= echo "# All finished." ; sleep 2 echo "100" ) | zenity --progress \ --title="Progress Status" \ --text="First Task." \ --percentage=0 \ --auto-close \ --auto-kill (( $? != 0 )) && zenity --error --text="Error in zenity command." exit 0

Если вы перейдете по ссылке на Ubuntu Forums, вы можете прочитать обсуждение этого скрипта. Если после этого у вас еще есть вопросы, пожалуйста, спросите через комментарий ниже, и я сделаю все возможное, чтобы ответить им за вас.

2
ответ дан 18 July 2018 в 10:50

Способ отображения zenity для отображения индикаторов выполнения - захват ваших команд echo из вашего скрипта bash с помощью команды перенаправления | (pipe) (символ).

Например, вы можете попробовать, что я снял с форумов Ubuntu:

#!/bin/bash # Force Zenity Status message box to always be on top. ( # ================================================================= echo "# Running First Task." ; sleep 2 # Command for first task goes on this line. # ================================================================= echo "25" echo "# Running Second Task." ; sleep 2 # Command for second task goes on this line. # ================================================================= echo "50" echo "# Running Third Task." ; sleep 2 # Command for third task goes on this line. # ================================================================= echo "75" echo "# Running Fourth Task." ; sleep 2 # Command for fourth task goes on this line. # ================================================================= echo "99" echo "# Running Fifth Task." ; sleep 2 # Command for fifth task goes on this line. # ================================================================= echo "# All finished." ; sleep 2 echo "100" ) | zenity --progress \ --title="Progress Status" \ --text="First Task." \ --percentage=0 \ --auto-close \ --auto-kill (( $? != 0 )) && zenity --error --text="Error in zenity command." exit 0

Если вы перейдете по ссылке на Ubuntu Forums, вы можете прочитать обсуждение этого скрипта. Если после этого у вас еще есть вопросы, пожалуйста, спросите через комментарий ниже, и я сделаю все возможное, чтобы ответить им за вас.

2
ответ дан 24 July 2018 в 19:39

Другие вопросы по тегам:

Похожие вопросы: