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

Python Discussion :

scrolledtext. manipulation des lignes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    660
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 660
    Par défaut scrolledtext. manipulation des lignes
    Je complète un scrolledtext via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    self.ml_text = scrolledtext.ScrolledText(self.ml_frame, height=25, width=100, 
                                                   font=('Consolas', 9))
     
    ...
     
     
        def log_message(self, message):    
            """Add message to analysis output"""
            timestamp = datetime.now().strftime("%H:%M:%S")
            self.analysis_text.insert(tk.END, f"[{timestamp}] {message}\n")   #scrolledtext
            self.analysis_text.see(tk.END)
            self.root.update()
    J'ai vu comment récupérer le contenu de cette liste via
    cur_inp = self.analysis_text.get("1.0", tk.END) ceci pour pouvoir par exemple sauver ce contenu dans un fichier sur le PC.

    Maintenant j'aimerais pouvoir modifier (éventuellement supprimer) la ligne N° n de la liste présentée dans scrolledtext au moment où je compète la liste ceci en fonction de différentes situations conjoncturelles.

    Pourriez-vous m'indiquer comment procéder?

    Merci pour toutes vos réponses!

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 761
    Par défaut
    Hello,

    Pour résoudre ce problème, il faut comprendre le système d'indexation du widget Text de Tkinter. Contrairement aux listes Python (index 0), Tkinter utilise des chaînes de caractères sous la forme "ligne.colonne", où les lignes commencent à 1.

    Vous pouvez créer une fonction "supprimer_ligne" et "modifier_ligne"

    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
    def supprimer_ligne(self, n):
        # Index de début : ligne n, colonne 0
        debut = f"{n}.0"
        # Index de fin : ligne n+1, colonne 0 (pour inclure le saut de ligne)
        fin = f"{n+1}.0"
     
        self.analysis_text.delete(debut, fin)
        # self.root.update() # Si nécessaire pour rafraîchir
     
    def modifier_ligne(self, n, nouveau_texte):
        # 1. Définir la plage à effacer (du début à la fin de la ligne, hors saut de ligne)
        debut = f"{n}.0"
        fin = f"{n}.end" 
     
        # 2. Supprimer l'ancien texte
        self.analysis_text.delete(debut, fin)
     
        # 3. Insérer le nouveau texte au même endroit
        self.analysis_text.insert(debut, nouveau_texte)
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    660
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 660
    Par défaut scrolltext
    avant tout MERCI!
    cela est fort clair et fonctionnel.

    maintenant pour connaitre le nombre de lignes de mon scrolltext j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    cur_inp = self.analysis_text.get("1.0", tk.END)
    A= len(cur_inp)
    NP=0;
    for i in range(0, A):
        if cur_inp[i]=='\n':
            NP +=1
    Cela marche mais me semble bien lourd.

    Y a-t-il un compteur de ligne directement accessible dans cet objet?

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def get_line_count(self):
        # On demande l'index de la position juste avant la fin absolue ('end-1c')
        # pour ne pas compter le saut de ligne automatique final de Tkinter
        last_index = self.analysis_text.index('end-1c')
     
        # last_index sera une chaine du type "42.15" (Ligne 42, colonne 15)
        # On coupe au point et on convertit en entier
        num_lines = int(last_index.split('.')[0])
     
        return num_lines
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Manipulation des lignes d'in fichier.txt R
    Par mimihh dans le forum R
    Réponses: 7
    Dernier message: 08/10/2013, 13h27
  2. Manipulation des lignes
    Par phi007 dans le forum SAS Base
    Réponses: 6
    Dernier message: 15/07/2013, 17h14
  3. (images binaires) manipulation des lignes
    Par lucastof dans le forum Images
    Réponses: 1
    Dernier message: 12/03/2011, 13h47
  4. Comment manipuler des lignes RichEdit avec attributs
    Par Nicolas Coolman dans le forum Débuter
    Réponses: 4
    Dernier message: 23/03/2009, 23h53
  5. Réponses: 14
    Dernier message: 07/09/2007, 23h45

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