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 :

Utilisation de text.get()


Sujet :

Tkinter Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut Utilisation de text.get()
    Bonjour,

    je souhaite utiliser text.get() pour récupérer le mot sur lequel je clique. Pourriez-vous m'aider svp?

    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
    import tkinter as tk
    import pickle
     
    text = tk.Text()
    n=0
    texte = [("Et","Et","GN,","AP","FC"),("JH","je","GN,","AP","FC"),("me","me","GN,","AP","FC"),("KI","suis","GN,","AP","FC"),("OR","demandé","GN,","AP","FC")]
     
    def on_click(event):
        print("ok")
        #text_range = text.tag_prevrange("myTag", "@%d,%d"%(event.x,event.y))
        #print (text.get(*text_range))
     
     
    for mot2 in texte :   
                if mot2[0]==mot2[1] :
                         text.tag_config(str(n), background="yellow", foreground="blue", underline=1)
                         text.insert('end', mot2[0], str(n), ' ')
                         text.tag_bind(str(n), '<Button-1>', on_click)
                else :
                         text.tag_config(str(n), background="red", foreground="green", underline=1)
                         text.insert('end', mot2[0], str(n), ' ')
                         text.tag_bind(str(n), '<Button-1>', on_click)
     
                n=n+1        
     
    text.pack()
     
    tk.mainloop()
    On m'avait donner un exemple dans un sujet précédent mais je suis pas arrivé à le retrouver.

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

    C'était ici.
    Mais c'était surtout un exemple pour vous montrer ce que savait faire le widget Text... Si vous voulez l'utiliser, il y a une étape "apprentissage" que vous avez sans doute sauté à la lecture de votre code.

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

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Si vous voulez l'utiliser, il y a une étape "apprentissage" que vous avez sans doute sauté à la lecture de votre code.
    - W
    Merci beaucoup. J'ai été voir ce lien : Text.tag_nextrange

    Mais mon code fonctionne pas encore très bien :

    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
    import tkinter as tk
    import pickle
     
    text = tk.Text()
     
    texte = [("Et","Et","GN,","AP","FC"),("JH","je","GN,","AP","FC"),("me","me","GN,","AP","FC"),("KI","suis","GN,","AP","FC"),("OR","demandé","GN,","AP","FC")]
     
    def on_click(e):
        text_range = text.tag_prevrange("button", "@%d,%d"%(e.x,e.y))
        print (text.get(*text_range))
     
    def on_click2(e):
        text_range = text.tag_prevrange("button1", "@%d,%d"%(e.x,e.y))
        print (text.get(*text_range))
     
    for mot2 in texte :   
                if mot2[0]==mot2[1] :
                         text.tag_config("button", background="yellow", foreground="blue", underline=1)
                         text.insert('end', ' ', "space", mot2[0], "button")
                         text.tag_bind("button", '<Button-1>', on_click)
                else :
                         text.tag_config("button1", background="red", foreground="green", underline=1)
                         text.insert('end', ' ', "space", mot2[0], "button1")
                         text.tag_bind("button1", '<Button-1>', on_click2)      
     
    text.pack()
     
    tk.mainloop()
    Quand on clique en haut à gauche, ça me répond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: get() missing 1 required positional argument: 'index1'
    C'est pas plus facile que d'utiliser des labels pour chaque mot. Mais ce serait quand même bien d'arriver à taguer tous les mots de n'importe quel texte.

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