Se connecter / S'enregistrer
Votre question

Interface Xdialog

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
5 Août 2007 18:39:10

Bonjour a tous,
J'essai d'ajouter une inteface graphique a un script que j'ai créer,
et je bloc dès le debut,
Je demande un mot de passe a l'utilisateur :

#!/bin/bash

DIALOG=${DIALOG=Xdialog}


$DIALOG --title "PassBox" --clear \
mdp=$(Xdialog --stdout --inputbox "Qui es-tu ?" 0 0)



while [ "$mdp" != "123" ]; do
echo "Vous n'etes pas autorisé à utiliser ce script!"
exit
done

Meme lorsque j'entre 123 la reponse est toujour negative:
"Vous n'etes pas autorisé à utiliser ce script!"

Alors si qqun sait ce qui cloche ... merci de son aide..

Autres pages sur : interface xdialog

a c 232 L Programmation
5 Août 2007 21:50:09

Salut,

Remplace
Citation :
$DIALOG --title "PassBox" --clear \
mdp=$(Xdialog --stdout --inputbox "Qui es-tu ?" 0 0)

Par
Citation :
mdp=$($DIALOG --title "PassBox" --clear --stdout --inputbox "Qui es-tu ?" 0 0)


Tu nous faisais quelque chose de bizarre là, il y avait deux fenêtres (car deux Xdialog, vu que $DIALOG = Xdialog ;) )
6 Août 2007 19:33:16

Merci beaucoup pour ton aide ça fonctionne parfaitement maintenant, si tu connais quelques liens pour apprendre xdialog ça m'interesse beaucoup car les sites que j'ai visité sont trés bref sur le sujet...
Encore merci pour ton aide.
Contenus similaires
6 Août 2007 20:17:43

Une autre question... lol
dans ce bout de code :

while [ "$cmpt" != "$nbr" ]; do

echo "life is life "
cmpt=$(($cmpt+1))
Xdialog --title "SendBox" --gauge "Envois" 0 0 [cmpt=$]

l'exmple est bidon, mais c'est pour apprendre lol
metons que la variable nbr est entrée par l'utilisateur un peu plus haut dans le code, pourquoi ça fonctionne pas ?

(J'ai trouver ça sur un site, ils donnent le code mais n'expliquent pas comment s'en servir...

Alors si toi au qqun d'autre pouvais m'aider ... ca serais cool !
Merci d'avance !
a c 232 L Programmation
6 Août 2007 21:02:19

il ne te manque pas un done pour fermer le do ?
6 Août 2007 22:40:31

Désolé j'ai oublié de le metre, mais il y est dans mon script...
a c 232 L Programmation
6 Août 2007 23:07:19

Tiens un exemple que je viens de faire :

  1. #!/bin/bash
  2.  
  3. cmpt=0;
  4. nbr=100;
  5.  
  6. while [ "$cmpt" -lt "$nbr" ]; do
  7. echo "$cmpt";
  8. cmpt=$(($cmpt+1));
  9. done | Xdialog --gauge "Envois" 0 0
a b L Programmation
6 Août 2007 23:23:32

[post_qui_sert_à_rien]
Je ne connaissais pas Xdialog.
Je viens d'installer pour voir ça :) 
[/post_qui_sert_à_rien]
a c 232 L Programmation
6 Août 2007 23:29:53

Tu connaissais peut-être Dialog CRicky ? C'est une amélioration.
Ca permet de faire des petites fenêtres rapidement quoi ;) 

J'en ai fait y'a 2 ans, c'est dûr de s'y remettre ! :) 
a b L Programmation
6 Août 2007 23:34:40

Non plus. En sh je n'ai fais que du script (enfin, on se comprend :)  )
Pour faire des scripts avec du graphique, j'utilisais tcl/tk, maintenant python/tkinter.

ça peut être utile, mais l'idéal serait de tester si le dm est lancé et si la commande existe avant pour le portage :) 
7 Août 2007 13:15:58

Merci omar j'essai ça tout de suite, juste une question, ca sert a quoi "-lt" ?
a b L Programmation
7 Août 2007 13:30:46

-lt pour Less Than (inférieur à), ça boucle tant que $cmpt < $nbr
a c 232 L Programmation
7 Août 2007 14:57:19

en bash, < effectue une redirection de flux, tu ne peux pas l'utiliser pour comparer (ou j'ai pas trouvé comment).
7 Août 2007 19:45:07

Petite question, lorsque nbr est egale a 150 ou lorsqu'il est egale a 16.200.343.431 la duré de la barre de progression est la meme.. pourquoi ?
a c 232 L Programmation
7 Août 2007 20:56:52

Vu que je n'avais jamais utilisé de gauge, je viens de faire quelques tests :
- La gauge marche avec des nombres de 0 à 100, si tu dépasses 100, quand elle va arriver à 100, ça va s'arrêter.

Ce qu'il faut faire, c'est que, même si tu as 16 000 ou 150, faut que tu le passes en pourcentage, afin d'avoir une valeur inférieure ou égale à 100%.

  1. #!/bin/bash
  2.  
  3. cmpt=0;
  4. nbr=20;
  5.  
  6. while [ "$cmpt" -lt "$nbr" ]; do
  7. echo "$cmpt";
  8. sleep 1;
  9. cmpt=$(($cmpt+1));
  10. done | Xdialog --gauge "Envois" 0 0


Par exemple, ce code ci-dessus va te faire une gauge qui va de 0 à 20, avec un pas de 1 (et qui s'arrête (sleep) une seconde à chaque fois), comme tu peux le voir, une fois arrivée à 20%, la gauge se ferme.
Maintenant, si tu refais la même de 0 à 40, ça va prendre deux fois plus de temps, puis la gauge se fermera à 40%.

A toi de trouver un petit calcul pour tout rapporter sur 100, afin de n'avoir que des nombres entre 0 et 100.
8 Août 2007 12:42:44

Ça n'aurais aucune utilité car selon ta thecnique 100% metrons toujours autant de temps a s'executer que 100 autres %
Il faut metre, a mon avis, une variable proportionel a nbr dans le sleep
je sais pas si je suis trés claire.. mais je me comprend en tout cas lol,
Merci de ton aide en tout cas je ne connaissais pas sleep ^^.
a c 232 L Programmation
8 Août 2007 12:57:06

Si ça aurait une utilité, plus la valeur sera grande, plus ils mettront de temps à arriver à 100%, vu que ça sera en fonction de la valeur maximale !

Je ne peux pas tester là, mais avec quelque chose comme ça, ça devrait le faire, non ?

  1. #!/bin/bash
  2.  
  3. cmpt=0;
  4. nbr=20;
  5.  
  6. while [ "$cmpt" -lt "$nbr" ]; do
  7. myvar=$(($cmpt/$nbr*100));
  8. echo "$cmpt";
  9. sleep 1;
  10. cmpt=$(($cmpt+1));
  11. done | Xdialog --gauge "Envois" 0 0
9 Août 2007 19:37:22

J'ai penssé a quelque chose comme tu dis la, mais
la variable myvar... dans ton script je me trompe surment mais elle ne sert a rien parcontre, si on fais
sleep 1*($myvar) ca devrais faire quelquechose nan ?
a c 232 L Programmation
9 Août 2007 20:51:46

ah pardon, au lieu de faire un echo "$cmpt", il faut faire un echo "$myvar".
Le sleep n'est là que pour avoir le temps de voir quelque chose.

Tu peux l'enlever si tu veux.
9 Août 2007 21:39:10

Hum je comprends pas bien , lorsqu'on fais echo
ou notre variable est affichée ?
Pour moi echo ne sert qu'a affiché des chose pour l'utilisateur et parfois l'inviter a entrer quelque chose...
Si tu a du temps pour m'éclairer..
Merci pour ton aide en tout cas!
a c 232 L Programmation
10 Août 2007 00:52:04

echo sert à afficher du texte, la valeur d'une variable, etc...

Maintenant, essaie de prendre la portion de texte suivante (la même que je t'ai donné 3 messages plus haut) :
  1. #!/bin/bash
  2.  
  3. cmpt=0;
  4. nbr=20;
  5.  
  6. while [ "$cmpt" -lt "$nbr" ]; do
  7. echo "$cmpt";
  8. sleep 1;
  9. cmpt=$(($cmpt+1));
  10. done | Xdialog --gauge "Envois" 0 0

Quand tu l'exécutes, la gauge t'affiche 1%, 2%, 3%, 4%, ... 20% (augmente d'un toutes les secondes) puis l'application se termine.

Maintenant, reprend exactement le même code, mais enlève le echo "$cmpt"

Soit :
  1. #!/bin/bash
  2.  
  3. cmpt=0;
  4. nbr=20;
  5.  
  6. while [ "$cmpt" -lt "$nbr" ]; do
  7. sleep 1;
  8. cmpt=$(($cmpt+1));
  9. done | Xdialog --gauge "Envois" 0 0


Qu'est ce que t'affiche la gauge ? Elle reste à 0% pendant les 20 secondes d'exécution du script.
A ton avis, qu'est ce qui fait que la gauge affiche une valeur ? :) 

Je pense que tu dois pouvoir avoir répondu à cette question.
Tu dois pouvoir avoir répondu à ta question "lorsqu'on fais echo ou notre variable est affichée ?" aussi je pense.

Comprend-tu mieux pourquoi il faut passer la valeur à un pourcentage afin de régler ce soucis ? Ou as tu besoin de plus d'éclaircissement ?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS