PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > Bind et wxPython
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Bind et wxPython

Réponse
 
LinkBack Outils de la discussion
Vieux 25/08/2007, 08h58   #1
j.cormouls@neuf.fr
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Bind et wxPython

Bonjour,

J'ai écrit un petit programme dans lequel défilent automatiquement des
pages, et toutes les deux pages, l'utilisateur diit répondre à une
question en tapant un chiffre de 1 à 9...

j'utilise donc :
self.Bind(wx.EVT_KEY_DOWN,self.touche)

pour saisir et vérifier l'entrée utilisateur.

Mon problème est que si l'utilisateur appuie sur le clavier avant
l'affichage de la question, chaque touche appuyée est gardée en
mémoire et est donc prise en compte à l''affichage de la question.

Comment faire en sorte que la saisie ne soit possible qu'au moment
opportun.
(Annulation de Bind? je n'y arrive pas).
Je pense n'avoir pas saisi les subtilités de la méthode Bind...

Merci de votre aide

JC

  Réponse avec citation
Vieux 26/08/2007, 00h48   #2
Amaury Forgeot d'Arc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Bind et wxPython

j.cormouls@neuf.fr a écrit :
> Bonjour,
>
> J'ai écrit un petit programme dans lequel défilent automatiquement des
> pages, et toutes les deux pages, l'utilisateur diit répondre à une
> question en tapant un chiffre de 1 à 9...
>
> j'utilise donc :
> self.Bind(wx.EVT_KEY_DOWN,self.touche)
>
> pour saisir et vérifier l'entrée utilisateur.
>
> Mon problème est que si l'utilisateur appuie sur le clavier avant
> l'affichage de la question, chaque touche appuyée est gardée en
> mémoire et est donc prise en compte à l''affichage de la question.
>
> Comment faire en sorte que la saisie ne soit possible qu'au moment
> opportun.
> (Annulation de Bind? je n'y arrive pas).
> Je pense n'avoir pas saisi les subtilités de la méthode Bind...


Je tenterais de mettre un appel à wx.Yield() juste avant le Bind.
Ainsi on donne une chance au système d'épuiser le tampon clavier.

--
Amaury
  Réponse avec citation
Vieux 28/08/2007, 15h32   #3
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Bind et wxPython

Bonjour,
> Comment faire en sorte que la saisie ne soit possible qu'au moment
> opportun.

S'il est correct de penser que ton programme n'a plus rien à faire au
moment de la saisie, peut-être peux-tu utiliser OnIdle (exemple :
monObjet.Bind(wx.EVT_IDLE,maMethode) ) pour positionner un indicateur
que tu vas tester dans self.touche.

Exemple non testé (désolé, pas assez de batterie):
self.Bind(wx.EVT_IDLE,self.OnIdle)
...
def OnIdle(self,event):
self.indic= True # la prochaine touche sera la bonne, les touches
bufferisées ont déjà été traitées à ce stade
def touche(self,event):
if self.indic == True:
*** traitement, après vidage du buffer clavier ***
self.indic= False
Ainsi, le traitement ne peut se déclencher que lorsque tous les
événements bufferisés ont été traités, par déclenchement de self.touche
dans ton cas. Ceci devrait provoquer un vidage du buffer clavier, sur
lequel je ne crois pas que tu aies la main avec wx, sauf erreur bien
entendu.

> Je pense n'avoir pas saisi les subtilités de la méthode Bind...

Je ne crois pas que ce soit bin bin fin : tu fais correspondre une
méthode à un événement, dont l'activation provoquera l'éxécution de
cette méthode.
  Réponse avec citation
Vieux 28/08/2007, 16h22   #4
Jerome
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Bind et wxPython

j.cormouls@neuf.fr wrote:
> Bonjour,
>
> J'ai écrit un petit programme dans lequel défilent automatiquement des
> pages, et toutes les deux pages, l'utilisateur diit répondre à une
> question en tapant un chiffre de 1 à 9...
>
> j'utilise donc :
> self.Bind(wx.EVT_KEY_DOWN,self.touche)
>
> pour saisir et vérifier l'entrée utilisateur.
>
> Mon problème est que si l'utilisateur appuie sur le clavier avant
> l'affichage de la question, chaque touche appuyée est gardée en
> mémoire et est donc prise en compte à l''affichage de la question.
>
> Comment faire en sorte que la saisie ne soit possible qu'au moment
> opportun.
> (Annulation de Bind? je n'y arrive pas).
> Je pense n'avoir pas saisi les subtilités de la méthode Bind...
>
> Merci de votre aide
>
> JC
>


Bonjour,
Quel est l'intérêt de capturer les événements clavier de cette façon
? J'ai l'impression que ton problème vient justement du fait que tu n'as
pas à l'utiliser de cette façon.

En lisant tes besoins, je pencherai plus pour un pseudo-code comme ceci :

tantque pas findeprogramme faire
faire défiler page
si page affichée demande question alors
poser question
attendre réponse
traiter réponse
finsi
fintantque

Ca me semble un traitement purement séquentiel avec une partie "modale"
pour l'interaction avec l'utilisateur, ce n'est pas un traitement
événementiel. A la limite tu peux lancer un événement lorsque la page
qui demande un choix de l'utilisateur est affichée et récupérer cet
événement à ce moment là.



Jérôme
  Réponse avec citation
Vieux 28/08/2007, 20h00   #5
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Bind et wxPython

> En lisant tes besoins, je pencherai plus pour un pseudo-code comme ceci :
>
> tantque pas findeprogramme faire
> faire défiler page
> si page affichée demande question alors
> poser question
> attendre réponse
> traiter réponse
> finsi
> fintantque
>
> Ca me semble un traitement purement séquentiel avec une partie "modale"
> pour l'interaction avec l'utilisateur, ce n'est pas un traitement
> événementiel. A la limite tu peux lancer un événement lorsque la page
> qui demande un choix de l'utilisateur est affichée et récupérer cet
> événement à ce moment là.


Sauf que si tu fais ça et que l'opérateur envoie des évènements claviers
pendant l'affichage, les touches seront mise en tampon avant traitement,
et c'est ce que ne veux pas notre ami. Dans la phase "attendre réponse",
tu vas récupérer tous les caractères frappés pendant la phase "faire
défiler".
C'est ce qui impose un vidage du buffer avant traitement, sinon c'est la
pagaille.
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 12h20.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,12664 seconds with 13 queries