#1 Le 26/11/2007, à 19:35
- winael
[aide] utilisation de zenity --list et cut/grep
Bonjour à tous
Je cherche à créer un QCM avec zenity seulement je bloque avec les choix multiples justement.
J'utilise la fonction zenity --list --cheklist... qui me retourne une fois mes cases cochées, un truc du genre :
More pictures:More complete post:Create a forum for question queries
Bien evidement le but du jeu est de tester la string zenity, choix par choix
d'autre part est il possible de tester le nombre de choix ? (genre je veux trois reponse, si l'eleve en donne plus, on donne 0 point à la question, faut pas deconner non plus c'est trop facile sinon )
Merci d'avance de votre aide
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#2 Le 26/11/2007, à 20:42
- Sleipnir
Re : [aide] utilisation de zenity --list et cut/grep
bsr,
Je vais peut être dire une bêtise, mais si tu mets la bonne réponse dans une variable que tu compares à la réponse zenity ? Ca ne ferait pas ?
Hors ligne
#3 Le 26/11/2007, à 20:57
- abetsic
Re : [aide] utilisation de zenity --list et cut/grep
Ben comme tu le dis, un coup de grep sur la chaà®ne de caractères renvoyés par zenity et tu peux savoir si l'utilisateur a donné une bonne réponse parmi celles cochées.
Pour compter le nombre de réponses tu peux faire un tr ':' '\n' | wc -l qui remplace les ":" par des retours à la ligne puis compte le nombre de ligne.
Hors ligne
#4 Le 26/11/2007, à 21:48
- winael
Re : [aide] utilisation de zenity --list et cut/grep
en fait je voudrais pouvoir donner un point par bonne réponse du style il a deux bonne réponse sur 3 je veux pas le pénalisé donc il a 2 à la question
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#5 Le 26/11/2007, à 21:56
- abetsic
Re : [aide] utilisation de zenity --list et cut/grep
Utilises grep plusieurs fois de suite pour chaque bonne réponse différente possible. à chaque fois que grep renvoie quelque chose ou que le code de retour vaux 0 (le code de retour est dans la variable $?) tu peux incrémenter un compteur... Ça donnera le nombre de bonnes réponses données par l'utilisateur.
Hors ligne
#6 Le 26/11/2007, à 22:12
- Alain.g
Re : [aide] utilisation de zenity --list et cut/grep
Salut
Zenity permet de choisir le séparateur de son choix via l'option --separator. Donc tu peux mettre "\n", " " ou ce que tu veux.
edit : après avoir testé, --separator="\n" marche en shell (/bin/sh), mais pas en bash... bizarre
Tu as tout intérêt à utiliser un colonne cachée qui servira d'identifiant à chaque réponse.
par exemple avec un numéro :
points=0;
while true ; do
q01=$(zenity --list --checklist --height=300 \
--title="questionnaire" \
--text="Quels sont les deux départements d'Alsace"\
--column="" --column="" --column="Départements" \
--hide-column=2 \
--separator=" " \
FALSE 01 "Gironde"\
FALSE 02 "Meurthe et Moselle"\
FALSE 03 "Bas-Rhin"\
FALSE 04 "Savoie"\
FALSE 05 "Vosges"\
FALSE 06 "Haut-Rhin")
if [ `echo $q01 | wc -w` -ne 2 ] ; then
zenity --error --text "vous devez choisir 2 réponses ! "
else
bonnesreponses=`echo $q01 | tr ' ' '\n' | grep -c '03\|06'`
points=$(($points+$bonnesreponses))
break
fi
done
zenity --info --text "Vous avez un total de $points ! "
S'il y a moins ou plus de 2 réponses, on repose la question (c'est à ça que sert la boucle while).
Et on compte le nombre de bonnes réponses avec grep et son option -c
Dernière modification par Alain.g (Le 28/11/2007, à 20:23)
Xubuntu Karmic !
Hors ligne
#7 Le 27/11/2007, à 01:09
- winael
Re : [aide] utilisation de zenity --list et cut/grep
Merci Alain.g je vais tester ca demain je vous tiens au Jus
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#8 Le 27/11/2007, à 03:50
- frafa
Re : [aide] utilisation de zenity --list et cut/grep
lo
Merci aussi à Alain.g
hide-column , je ne connaissait pas
les --text "... !" a la fin pour moi passent pas obligé de mettre --text "... \!"
Dernière modification par frafa (Le 27/11/2007, à 03:50)
Hors ligne
#9 Le 28/11/2007, à 18:26
- winael
Re : [aide] utilisation de zenity --list et cut/grep
J'ai un pb avec un des options de zenity concernant le message d'erreur
Tant que la condition de pas avoir donné le bon nombre de réponse n'est pas validée le script doit me retourner un message d'erreur
if [ `echo $q01 | wc -w` -ne 2 ] ; then
zenity --error --text "vous devez choisir 2 réponses !"
Malheuresement en mode debuggage console voici le message d'erreur :
Cette option n'est pas disponible. Veuillez consulter --help pour toutes les utilisations possibles.
Autre question : J'aimerais que seulement lorsque l'eleve selectionne plus que le nombre de réponse que le message lui apparaisse et dans ce cas la je lui met 0 a la question et on passe à la suite. Malheureusement j'ai un epu du mal a comprendre la l'argument
[ `echo $q01 | wc -w` -ne 2 ]
quelqu'un peut il me guider
merciiiii
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#10 Le 28/11/2007, à 18:39
- frafa
Re : [aide] utilisation de zenity --list et cut/grep
-ne ==> inégalité, est different
wc -w ==> compte le nombre de mots
points=0;
while true ; do
q01=$(zenity --list --checklist --height=300 \
--title="questionnaire" \
--text="Quels sont les deux départements d'Alsace" \
--column="" --column="" --column="Départements" \
--hide-column=2 \
--separator=" " \
FALSE 01 "Gironde" \
FALSE 02 "Meurthe et Moselle" \
FALSE 03 "Bas-Rhin" \
FALSE 04 "Savoie" \
FALSE 05 "Vosges" \
FALSE 06 "Haut-Rhin")
if [ `echo $q01 | wc -w` -ne 2 ] ; then
zenity --error --text "vous devez choisir 2 réponses \!"
else
bonnesreponses=`echo $q01 | tr ' ' '\n' | grep -c '03\|06'`
points=$(($points+$bonnesreponses))
break
fi
done
zenity --info --text "Vous avez un total de $points \!"
Hors ligne
#11 Le 28/11/2007, à 20:24
- frafa
Re : [aide] utilisation de zenity --list et cut/grep
if [ `echo $q01 | wc -w` -gt 2 ] ; then
#si est sup a 2
elif [ `echo $q01 | wc -w` -ne 2 ] ; then
#si équivalent a 2
else
#sinon
fi
Dernière modification par frafa (Le 28/11/2007, à 20:26)
Hors ligne
#12 Le 29/11/2007, à 01:11
- yleetiny
Re : [aide] utilisation de zenity --list et cut/grep
euh il y a beaucoup plus simple pour savoir le nombre d'éléments dans ta variable:
${#q01} est le nombre d'éléments de la variable $q01
après c'est qu'une question de lisibilité du code.
on peut même faire ta condition par
if [ "${#q01}" = "1" ] ; then
....
Ordinateurs : SONY VAIO C2Z/B & EEEPC 701
Merci de mettre [RESOLU] dans vos postes si le problème est réglé,
et Merci de partager vos expériences
Hors ligne
#13 Le 29/11/2007, à 01:37
- Alain.g
Re : [aide] utilisation de zenity --list et cut/grep
${#q01} est le nombre d'éléments de la variable $q01
Cela vaut pour les tableaux. Exemple: ${#q[*]}
Mais là ce n'est pas le cas, ${#q01} donnerait le nombre de caractères.
si q01="01 03 05" alors ${#q01} sera égal 8, alors qu'avec wc -w, cela donnera 3
Rien n'empêche d'utiliser les tableaux d'ailleurs...
Dernière modification par Alain.g (Le 29/11/2007, à 12:29)
Xubuntu Karmic !
Hors ligne
#14 Le 29/11/2007, à 12:37
- yleetiny
Re : [aide] utilisation de zenity --list et cut/grep
ah oui, c vrai...j'avais oublié (j'utilise quasiment que des tableaux c'est pour cela)
Ordinateurs : SONY VAIO C2Z/B & EEEPC 701
Merci de mettre [RESOLU] dans vos postes si le problème est réglé,
et Merci de partager vos expériences
Hors ligne