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 :

Text et Tags


Sujet :

Tkinter Python

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut Text et Tags
    Je suis devant un problème simple concernant le moins simple des widgets Tkinter: Le widget Text ou j'aimerai ajouter des tag mais je n'y arrive pas comme je le voudrai.
    Voici mon code expérimental:
    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
     
    from Tkinter import *
    a='ab'
    i=0
    b=[]
    while i < 50 :
      b.append(a)
      i += 1
     
    def entrées() :
      global texte, b
      i=0
      while i < 50 :
     
        if i%2 == 0 :
          texte.insert(0.+i, b[i])
          texte.tag_add(tag0+str(i), 0.+i, 0.+(i+2))
          texte.tag_configure(tag0+str(i), foreground='red')
     
        elif i%2 != 0 :
          texte.insert(0.+i, b[i])
          texte.tag_add(tag0+str(i), 0.+i, 0.+(i+2))
          texte.tag_configure(tag0+str(i), foreground='green')
     
        i += 1
    fen=Tk()
    texte= Text(a, width=50)
    bout= Button(a, text='insertion', command=entrées)
    texte.pack()
    bout.pack()
    fen.mainloop()
    Comme vous pouvez le remarquez je cherche simplement a alterner 2 couleur de texte et étant désespérer de ne pas y arriver je vous demande votre aide.
    Le code expérimental présenter ne fonctionne pas et dans mes différents remaniements j'arrive a deux résultat érroner:
    -soit le texte est d'une seule couleur
    -soit seul les 2 premiers paires 'ab' sont colorier, le reste en noire.
    Si quelqu'un peut m'aider sa serai sympa.

    PS: pas facile avec les coordonnées ce widget.

  2. #2
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Du coup, comme c'est un code de test, je ne sais pas si c'est vraiment la demande mais bon:

    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
    try:
        import Tkinter as tk
    except:
        import tkinter as tk
     
    b=[]
    for elem in range(50):
        b.append('ab')
     
    def entrees():
        for i, elem in enumerate(b):
            if i%2 == 0:
                texte.insert(tk.END, b[i], 'red')
            else:
                texte.insert(tk.END, b[i], 'green')
            texte.tag_configure('red', foreground='red')
            texte.tag_configure('green', foreground='green')
     
    fen=tk.Tk()
    texte= tk.Text(fen, width=50)
    texte.pack()
    tk.Button(fen, text='insertion', command=entrees).pack()
    fen.mainloop()
    @+

  3. #3
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour la technique d'insertion, je vais l'essayer et si elle marche sa sera un bon point pour mes différents malheurs avec l'indexation du widget Text ((0.0, 'text') qui s'insere a la deuxieme ligne etc...) et j'ai donc oublier de préciser la couleur lors de l'insertion sinon je vois pas de différence avec mon code.
    Merci pour la réponse.

  4. #4
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    J'avais oublier de répondre.
    Comme tu le précise l'index est sous la forme ligne.colonne, donc lorsque tu fait texte.insert(0.+i, b[i]) et que i = 1 tu fait un texte.insert(1.0, b[1])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> i = 1
    >>> print 0. + i
    1.0
    >>> print 0.+i, 0.+(i+2)
    1.0 3.0
    Maintenant il existe bien des façons de faire
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    from Tkinter import *
    a='ab'
    i=0
    b=[]
    while i < 50 :
      b.append(a)
      i += 1
     
    def entrees() :
        i=0
        while i < 50 :
            # Avec l'index
            start = texte.index(CURRENT).split('.')[0] + '.' + str(i*2)
            end = texte.index(CURRENT).split('.')[0] + '.' + str(i*2+2)
            if i%2 == 0 :
                texte.insert(start, b[i])
                texte.tag_add('tag0'+str(i), start, end)
                texte.tag_configure('tag0'+str(i), foreground='red')
            elif i%2 != 0 :
                texte.insert(start, b[i])
                texte.tag_add('tag0'+str(i), start, end)
                texte.tag_configure('tag0'+str(i), foreground='green')
            i += 1
     
    def entrees1():
        # Avec 0.+1
        i=0
        while i < 50 :
            texte.insert(0.+i, b[i], 'tag0'+str(i))
            if i%2 == 0 :
                texte.tag_configure('tag0'+str(i), foreground='red')
            else:
                texte.tag_configure('tag0'+str(i), foreground='green')
            i += 1
     
    def entrees2():
        # Avec CURRENT
        for i, elem in enumerate(b):
            texte.insert(CURRENT, b[i], 'tag0'+str(i))
            if i%2 == 0:
                texte.tag_configure('tag0'+str(i), foreground='red')
            else:
                texte.tag_configure('tag0'+str(i), foreground='green')
     
     
     
    fen=Tk()
    texte= Text(fen, width=50)
    texte.pack()
    Button(fen, text='insertion', command=entrees).pack()
    Button(fen, text='insertion 1', command=entrees1).pack()
    Button(fen, text='insertion 2', command=entrees2).pack()
    fen.mainloop()
    @+

  5. #5
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Je reconnait mon erreur d'addition de chiffres, mais pour ma défense on peut très bien donner l'index sous forme de chaine de caractères:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    i=1
    type(i)
    <type int>
    res=0.+i
    res
    1.0
    #mais 
    i=1
    res=str(0.)+str(i)
    res='0.1'
    Merci pour la correction et les technique d'insertion ce qui me fait acquérir de l'expérience.

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

Discussions similaires

  1. Recherche texte avec tags
    Par scrouet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 08/06/2010, 13h59
  2. Extraction texte entre 2 tags
    Par donlefou dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 28/06/2007, 18h47
  3. [Débutant] Tag Text et type "complexe" ?
    Par DemonKN dans le forum Struts 1
    Réponses: 14
    Dernier message: 22/09/2006, 10h01
  4. Système de tags pour catégoriser des textes
    Par yazerty dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 18
    Dernier message: 20/03/2006, 17h32
  5. Tags : explication de texte
    Par Auteur dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 02/12/2005, 10h07

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