IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Recherche dans Text - bind key


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Par défaut Recherche dans Text - bind key
    Bonjour.
    Je cherche à faire un système de recherche pour l'historique de ma calculatrice.
    je tape "1", rien ne se passe. j'ajoute un second caractère, le premier se révele. Un troisième, et se sont les deux premiers qui s'affichent... Pourquoi ce décalage ?
    Si je tape "= 1", les "= " se colorent. J'appuis sur backspace, et "= 1" se colorent alors que l'expression à colorer est devenue "= ".

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    class Historique:
        def afficher(self,event=""):
     
            # Création de la fenetre
            self.fen=Toplevel()
            self.fen.title(_("Historique"))
     
            # Création du menu
            self.histMenu=Frame(self.fen,borderwidth=2,relief='groove')
     
            self.searchBox=Entry(self.histMenu)
            self.searchBox.bind("<Key>",self.cherche)
            self.searchBox.pack(side='left')
     
            self.histMenu.grid(columnspan=2,sticky='we')
     
            # --- Création du Text "Hist" qui contiendra l'historique et de ses scrollbars ---
            self.Hist=Text(self.fen,wrap='none',width=50,height=10)
            self.sb1=Scrollbar(self.fen,orient='vertical')
            self.sb2=Scrollbar(self.fen,orient='horizontal')
     
            self.Hist.insert("0.0",varHist)
            self.Hist.config(state='disabled',xscrollcommand=self.sb2.set,yscrollcommand=self.sb1.set)
            self.sb1.config(command=self.Hist.yview)
            self.sb2.config(command=self.Hist.xview)
     
            self.Hist.grid(row=1,sticky='nsew')
            self.sb1.grid(row=1,column=1,sticky='sn')
            self.sb2.grid(row=2,sticky='we')
     
            self.Hist.tag_configure('mot_cle',background='grey')
            self.Hist.insert("0.0",varHist)      # Chargement de l'historique dans le Text
            self.Hist.bind('<F6>',self.selectAll)     # La touche F6 selectionne le contenu du Widget Text pour qu'il puisse être copié
    def cherche(self,event):
            self.expr=self.searchBox.get()
            self.nmbChar=IntVar()
            self.lastPos="1.0"
            self.Hist.tag_remove('mot_cle','1.0','end')
            while 1 :
                self.lastPos=self.Hist.search(self.expr,index=self.lastPos,stopindex='end',regexp=1,count=self.nmbChar)
                if self.lastPos=="":break
                self.Hist.tag_add('mot_cle',self.lastPos,"%s + %d chars" % (self.lastPos,self.nmbChar.get()))
                self.lastPos = "%s + 1 chars" % self.lastPos
    Comment mettre la recherche en "temps réel" ?
    Merci pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Par défaut
    Je n'ai pas trouvé de solution au problème, mais ce n'est pas grave, mes tests ayant été effectués sur une variable de petite taille, ça fonctionnait bien, mais venant de tester avec un fichier assez conséquent (et encore...) et voyant le temps de la recherche, je préfère que l'utilisateur lance la recherche avec Return/KP_Enter ou un bouton pour que ça rame un bon coup et pas tout le temps.
    Mais si quelqu'un a une solution, merci de la poster, ça pourrait servir à quelqu'un d'autre (ou à moi plus tard, sait on jamais).

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Ton problème viens du décalage entre l'event et l'affichage dans l'entry.

    Lors de l'event une touche est pressée.
    Après l'event l'entry comporte un caractère de plus.

    Fais un print self.expr et tu vas comprendre.

    Tu devrais plutôt passer par une validation de ton entry (voir la doc du Widget ou un exemple ici)

    Bon code

Discussions similaires

  1. Fonction de recherche dans tableau avec key
    Par blueace dans le forum Langage
    Réponses: 6
    Dernier message: 24/01/2014, 17h42
  2. Macro : recherche dans textes par cellule
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/11/2012, 21h39
  3. recherche dans un fichier key-values
    Par maxonman dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 28/11/2007, 17h47
  4. recherche dans texte
    Par malhivertman1 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2006, 15h02
  5. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo