Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Tkinter] Suppression lignes widget Text

Comment supprimer les deux dernières ?

    29 janvier 2011 à 22:01:19

    Bonjour à tous !
    Mon problème est le suivant.
    J'ai un widget Text, dont le contenu est variable (donc impossible à prévoir).
    Je souhaiterais néanmoins pouvoir en supprimer les deux dernières lignes. J'ai bien compris le fonctionnement de la méthode Text.delete(), mais je n'arrive pas à trouver comment supprimer uniquement les deux dernières lignes (cette méthode comptant les lignes depuis le début, ce me semble).
    Voilà, si vous avez une idée...
    Bout de code :
    a=Tk()
    b=Text(a)
    b.pack()
    a.mainloop()
    
    #b est remplit par l'utilisateur => impossible de prévoir la taille
    
    def change():
    """Fonction se déclenchant à l'appui sur un Button"""
        b.delete(??,??)
        a.update()
    


    Amicalement,
    Yakork
    • Partager sur Facebook
    • Partager sur Twitter

    Et voilà !

    Anonyme
      29 janvier 2011 à 23:07:09

      Il suffirait juste de connaitre 1 ligne fait combien de caractères, non?

      Et normalement c'est toi qui le configure en créant ton widget avec width et height.

      text = Text(parent, width=40, height=10) # ici 40 caractères
      


      • Partager sur Facebook
      • Partager sur Twitter
        30 janvier 2011 à 12:34:52

        Oui, mais le problème est que cela marche si le nombre de lignes entrées est fixe. On peut alors supprimer les deux dernières avec Text.delete(18.0,END) (quand il y a 20 lignes).
        Le problème est que moi, mon nombre de lignes est variable... Il n'y en a pas toujours 20...
        Petit exemple avec mon code :
        from Tkinter import *
        a=Tk()
        
        def A_text:
            t.insert(END,e.get(1.0,END))
            t.yview(END)
            a.update() 
        
        t=Text(a,bg="grey",height=20)
        t.pack(side=LEFT)
        e=Entry(a)
        e.pack(side=RIGHT)
        b=Button(a,text="Ajouter texte",command=A_text)
        b.pack()
        a.mainloop()
        


        Là, l'utilisateur rentre ce qu'il veut dans le Text, mais on ne peut prévoir le nombre de lignes rentrées... Donc je ne peux supprimer (18.0,END)...

        D'où mon problème... Auriez-vous une autre solution ?
        Merci encore
        Yakork

        [edit] J'ai trouvé une solution. Ça reste de l'expérimental, mais ça marche, c'est l'essentiel.
        self.me.delete(float((int(len(self.me.get(1.0,END).split("\n")))-2)),END)
        

        self.me est un objet Text.
        [/edit]
        • Partager sur Facebook
        • Partager sur Twitter

        Et voilà !

        [Tkinter] Suppression lignes widget Text

        × 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