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 :

Coloration syntaxique sur Python 3


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Coloration syntaxique sur Python 3
    Bonjour !

    Je suis sur un éditeur de text.

    j'ai créé un widget Text.

    Je veux précisément colorier un mot quand j'écris.

    par exemple:

    Hello World !

    j'y arrive avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tag_add("hello","1.0","1.5")
    tag_config("hello",foreground="red")
    seulement il ne colorie que la première ligne où il est écrit Hello mais pas les autres.

    Comment on fait ??

  2. #2
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 882
    Points : 1 545
    Points
    1 545
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    seulement il ne colorie que la première ligne où il est écrit Hello mais pas les autres.
    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tag_add("hello","1.0",1.5)
    tu assignes un tag que tu as appellé 'hello' ( tu aurais pu aussi l'appeller "machin_bidulle_truc") à une région comprise entre l'index 1.0 et 1.5 de ton texte....

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par Alex_Mikkrow Voir le message
    Comment on fait ??
    Utilisez la méthode .search pour récupérer les index de toutes les occurrences de hello dans le texte "avant".

    - W

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Utilisez la méthode .search pour récupérer les index de toutes les occurrences de hello dans le texte "avant".

    - W
    bonjour ! Merci de ta réponse !

    Comme ceci ?
    mais il colorie tous le texte, je sais qu'il faut changer un truc dans le '1.0' ou/et le 'END' mais je ne sais pas.

    Ou peut être il faut rechercher le mot récupérer sa position pour ensuite configurer le tag_add ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def Colors_Syntaxe():
    	hello = entree.search("hello", "1.0", stopindex="end", count=entree_count)
    	entree.tag_add(hello, "1.0", END)
    	entree.tag_config(hello, foreground="blue")

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Je cherche
    Genre comme sa:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    def Colors_Syntaxe():
    	hello = entree.search("Hello", "1.0", stopindex="end", count=entree_count)
    	print(hello)
    	entree.tag_add(hello, "4.0", "4.5")
    	entree.tag_config(hello, foreground="blue")
    mais version automatique

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par Alex_Mikkrow Voir le message
    Ou peut être il faut rechercher le mot récupérer sa position pour ensuite configurer le tag_add ??
    Soyez un peu logique: chercher la position de toutes les occurrences d'un mot dans un texte/chaine de caractères, c'est construire une liste d'index.
    Donc si .search ne permet que de trouver une seule occurrence à partir d'un index donné, pour récupérer toutes les occurrences, il va falloir faire une boucle.

    Arrivé ici on a une liste L d'index (éventuellement vide) des différentes occurrences.
    Pour faire .add_tag, il va falloir construire une autre liste L' à partir de L pour avoir la suite début, fin des index de chaque occurrence.

    Et résoudre les difficultés que présente chaque étape (ce qui est autre chose que d'essayer n'importe quoi pour constater "çà marche pas"...)

    - W

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Vous pouvez réexpliquer je n'ai pas compris.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par Alex_Mikkrow Voir le message
    Vous pouvez réexpliquer je n'est pas compris.
    Prenez la chaine de caractères 'XX123XX0XX555XXZZZZ'.
    Imaginez que vous vouliez fabriquer la liste des indices (début, fin) de 'XX'.
    On part de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> s = 'XX123XX0XX555XXZZZZ'
    >>> s.find('XX')
    0
    la première occurrence commence à 0, la longueur de XX est 2.
    Le premier (début, fin) sera (0, 2)

    Si on veut trouver le suivant, il faut le chercher à partir de 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> s.find('XX', 2)
    5
    On a le second (5, 7) et on recommence jusqu'à ce qu'on en trouve plus.

    Avec .search, c'est la même cuisine sauf que ce n'est plus une chaîne de caractères mais un widget et qu'à la place d'une position réduite à un seul entier, on a des index de la forme (n°ligne, n°colonne)

    Commencez par faire le boulot avec une chaine de caractères, puis essayez de voir comment appliquer çà au widget Text.

    - W

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Vaut mieux abandonné le projet je ne comprend pas.

Discussions similaires

  1. Coloration syntaxique sur le forum
    Par Anomaly dans le forum Evolutions du club
    Réponses: 133
    Dernier message: 02/12/2014, 18h54
  2. Coloration syntaxique sur un QTextEdit
    Par hizoka dans le forum PyQt
    Réponses: 5
    Dernier message: 16/04/2014, 10h46
  3. Coloration syntaxique sur champ Text
    Par legentil dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 18/10/2010, 12h46
  4. Coloration syntaxique comme sur Developpez
    Par ero-sennin dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 13/04/2008, 02h28

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