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 :

les options de la commande search du widget Text


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut les options de la commande search du widget Text
    Bonjour,
    Je ne comprends pas le fonctionnement de 2 options de la commande search du widget Text.
    A savoir: exact et forwards.
    J'avais espéré que exact corresponde au <<mot entier exactement>>; mais à priori il n'en est rien.
    Je ne vois pas trop l'utilité de forwards sachant qu'il y a backwards.
    Donc ma question est: Peut-on faire avec cette commande une recherche sur le mot <<exacte>> (j'ai essayé avec des <<je>> - voir code ci-dessous) sans succès...
    A quoi sert l'option forwards?
    Ci joint 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
    import tkinter
     
    def recherche(event=None):
        nmbChar = tkinter.IntVar()
        position=texte1.search('je',tkinter.INSERT,forwards=0,backwards=0,exact=0,regexp=1,nocase=0,count = nmbChar)
        if position:
            texte1.tag_add(tkinter.SEL,position,"%s + %d chars" % ( position, nmbChar.get() ))
            texte1.mark_set(tkinter.INSERT,position)
            texte1.see(position)
     
    root = tkinter.Tk()
    texte1 = tkinter.Text(root)
    texte1.focus_set()
    texte="""Je cherche à faire des reconnaissances des <<je>>. Il me faut plusieurs je mais aussi des jeux et parfois le jeudi. Je pense avoir fait suffisamment de je"""
    texte1.insert(tkinter.INSERT,texte)
    texte1.pack()
    texte1.bind('<F3>',recherche)
    root.mainloop()
    Merci.
    Gabriel

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    forwards apparemment en regardant la doc représenterait un choix de recherche par index, si True, c'est le cas (paramètre par défaut)

    exact peut être True ou False, selon que tu recherches le terme exact ou non.
    Par défaut il est à True.
    Donc quand tu mets exact à 0, tu le paramètres à la valeur False.

    Peut-on faire avec cette commande une recherche sur le mot <<exacte>> (j'ai essayé avec des <<je>> - voir code ci-dessous) sans succès...
    Sûrement en paramétrant exact à la valeur 1 ou True
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    J'ai finalement trouvé une doc sur le forum -proposé n.tox - http://www.nmt.edu/tcc/help/pubs/tkinter.pdf qui me semble assez accessible.

    J'ai l'impression que l'intitulé <<exacte>> est en fait en opposition avec l'intitulé regexp (expressions régulières). Il sous-entend, que l'expression saisie est exacte (une parenthèse est une parenthèse) à la différence de regexp où une parenthèse délimite un ensemble de contraintes.
    Mais çà me parait bizarre car comment fait-il pour gérer la situation où exacte=1 et regexp=1?

    En tout cas j'avais déjà essayé avec exacte=1 ou 0, True, False, et à aucun moment il a fait la différence entre mot partiel et mot entier...

    Et je n'ai pas vu de différence (sur l'exemple ci-dessus) entre forewards=1 et forewards=0.

    Gabriel

    Gabriel

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Comme je n'ai pas réussi à comprendre le fonctionnement de exact=0 ou 1, pour rechercher un mot exact, j'utilise une expression régulière du type:
    r'[\s\n]'+mot+'[\s\n]'

    Gabriel

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    si on recherche la chaîne "toto*", il peut être utile de préciser s'il s'agit d'une regexp - auquel cas on cherche ce qui contient toto - ou exact - dans ce cas on cherche toto suivit de '*'.
    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    OK. Je n'arrive pas bien à me formuler le rôle de exacte. Mais si en expreg on tape toto\*, cela devrait revenir au même non?
    Merci
    Gabriel

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Citation Envoyé par Ruyneau Voir le message
    OK. Je n'arrive pas bien à me formuler le rôle de exacte. Mais si en expreg on tape toto\*, cela devrait revenir au même non?
    A priori oui mais pensons cas d'utilisation.
    Lorsque l'utilisateur sélectionne une chaîne de caractère et recherche toutes ses occurrences dans le texte. Dans ce cas, c'est "exact" et c'est bien pratique car vous n'avez pas à modifier la chaîne sauf peut-être à préciser la casse.

    Si on souhaite faire une recherche avec un motif de type regexp, on est plus ou moins obligé de "proposer" à l'utilisateur la saisie d'une regexp pour la traiter en tant que telle.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Proposition de FAQ : les options de ligne de commande de L'EDI
    Par SergioMaster dans le forum Lazarus
    Réponses: 1
    Dernier message: 26/10/2009, 20h35
  2. Réponses: 3
    Dernier message: 10/09/2009, 11h08
  3. [OpenOffice][Tableur] Macro, où trouve t on les différentes options d'une commande
    Par esperanto94 dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 15/11/2008, 11h07
  4. [Free Pascal] Les options de la ligne de commande
    Par Hibou57 dans le forum Free Pascal
    Réponses: 0
    Dernier message: 11/10/2007, 01h25

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