Partage
  • Partager sur Facebook
  • Partager sur Twitter

colorer une chaine de caractere dans tkinter

comment colorer une chaine de caractere dans Text tkinter

    26 mars 2019 à 20:53:30

    Bonsoir

    J'aimerais bien colorer deux  chaines de caractère écrites dans un widget Text tkinter selon l’état d'un checkbouton (coche ou bien non coche).

    supposons que j'ai deux  variables A et B ; chacune contient une chaine de caractère de telle sorte que :

    A="opération approuvée"

    B="opération non encore approuvée"

    et que lorsque le bouton checkbutton est :

    * coche , c'est la chaine A qui s’écrit avec une couleur verte.

    * non coche , c'est la chaine B qui s’écrit avec une couleur marron

    Comme vous voyez ces chaines ne sont pas sur une ligne précise du contenu du widget Text, mais  s’écrivent à l’entête d'un paragraphe qui s'ajoute dans le widget Text au cours du temps et à chaque rafraichissement du contenu du Text par une fonction update

    ya t il une solution à cette problématique

    Merci

    -
    Edité par hamada66 27 mars 2019 à 7:00:47

    • Partager sur Facebook
    • Partager sur Twitter
      27 mars 2019 à 13:28:13

      Salut,

      Il me semble qu'une solution t'avait déjà été donnée dans un sujet précédent non ? Tu veux quelque chose comme ça ?

      import tkinter as tk
      
      def on_cb():
          if value.get() == 1:
              text.tag_config('red', foreground='')
              text.tag_config('green', foreground='green')
          else:
              text.tag_config('red', foreground='red')
              text.tag_config('green', foreground='')
      
      def on_button():
          text.insert('1.0', "Du texte random. ")
      
      root = tk.Tk()
      text = tk.Text(root, height=10, width=50)
      value = tk.IntVar(value=0)
      cb = tk.Checkbutton(root, variable=value, text="activer", command=on_cb)
      button = tk.Button(root, text="ajouter texte", command = on_button)
      text.pack()
      cb.pack()
      button.pack()
      
      text.insert('0.1', "rouge, vert, du text random,\nEt un paragraphe après l'entête")
      
      text.tag_add('red', '1.0', '1.5')
      text.tag_add('green', '1.7', '1.11')
      
      text.tag_config('red', foreground='red')
      
      root.mainloop()
      



      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2019 à 16:10:20

        ceci est un aperçu de ce que je souhaite réaliser : déjà le contenu du Text widget est en noir actuellement.
        ce qui est entoure avec le rouge , j'aimerais bien qu'il soit écrit en rouge.
        ce qui est  entoure avec le vert , j'aimerais qu'il soit écrit en vert.
        • Partager sur Facebook
        • Partager sur Twitter
          27 mars 2019 à 16:34:42

          Et qu'est ce qui e va pas dans ce que je propose ? Il te suffit d'adapter les index des tags pour qu'ils collent avec ton contenu.
          • Partager sur Facebook
          • Partager sur Twitter
            27 mars 2019 à 16:48:34

            peut être que j'ai pas bien assimile ton code. en plus du fait que les deux chaines ne s’écrivent pas toutes les deux a la fois

            seule la chaine verte ou rouge s'ecrit a l’entête d'un contenu selon l’état du checkbutton

            ensuite un autre contenu différent du précédent qui s'ajoute avec le boutton "add", dont l entete peut être verte ou rouge toujours selon l’état du checkbuton

            et voici un bout de code de l'ecriture de ces informations que je veux colorer :

            # ajout des evenements à la table par la commande du bouton "archiver"
            def Add_To_Table_cev():
            
            	phrase_approuve="correction approuvee par l'avion LABO"
            	message_approuve=phrase_loc35R_approuve.center(56,'*')
            		
            	phrase_non_approuve="correction non encore approuvee par l'avion LABO"
            	message_non_approuve=phrase_loc35R_non_approuve.center(56,'*')
            
            #selon l'etat du bouton a cocher (checkbuton)
            	if variable_case_correction.get ()==0 :
            		message_labo_get=message_non_approuve	
            	else:	
            		message_labo_get=message_approuve



            -
            Edité par hamada66 27 mars 2019 à 16:59:00

            • Partager sur Facebook
            • Partager sur Twitter
              28 mars 2019 à 21:02:40

              ya til une possibilité d'utiliser les balises HTML ,  dans python pour effectuer la coloration de la chaine de caractère

              <style>

              .mycolor {color: # FF0000; }

              </style>

              <span class="mycolor">Hello Workd</span>

              • Partager sur Facebook
              • Partager sur Twitter
                28 mars 2019 à 21:40:38

                tkinter ce n'est pas de l'HTML
                • Partager sur Facebook
                • Partager sur Twitter
                  30 mars 2019 à 9:53:13

                  j'ai pose cette question; car en html, il  est si facile de personnaliser un bloc avec les balises <span class ""> .

                  Alors que dans python je ne suis arrive a colorer une chaine de caractère dans un Text tkinter, sachant que cette chaine de caractère s’écrit à maintes reprise suivant que clique sur le bouton "add".

                  donc, cette chaine de caractère peut être écrite sur plusieurs lignes

                  -
                  Edité par hamada66 30 mars 2019 à 10:44:10

                  • Partager sur Facebook
                  • Partager sur Twitter

                  colorer une chaine de caractere dans tkinter

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown