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 :

Widget text: insérer du texte depuis le début de la ligne


Sujet :

Tkinter Python

  1. #1
    Invité
    Invité(e)
    Par défaut Widget text: insérer du texte depuis le début de la ligne
    Bonjour,

    Est ce que quelqu'un aurait une piste pour que je puisse dans un widget text, insérer du texte, non pas depuis la fin du texte précédent, mais depuis le début de la ligne (0).

    En fait, je cherche à écrire du texte de façon alignée dans la seconde partie de ma ligne, comme si mon texte était constitué de deux colonnes.

    Est-ce que je me suis bien fait compris ? (commissaire Gibert )

    Merci pour vos éléments de réponse .

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

    La méthode .insert du widget Text prend en premier paramètre la position où insérer le texte.

    Après il faut essayer de comprendre comment formuler un index mais à priori la documentation me semble assez bien faite.

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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci.

    Oui, c'est cette même doc que je potasse mais je bute.
    Je vais continuer à me creuser le cerveau jusqu'à ce que le déclic se fasse.
    Au moins je sais que c'est bien sur les index qu'il me faut chercher la réponse.
    Merci.

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

    Essayez déjà de représenter ce que vous voulez faire sur une feuille de papier. J'ai cru comprendre que vous vouliez faire des sortes de colonnes.

    Imaginez 10/20 lignes de 80 caractères.
    Si je veut faire des colonnes, çà veut peut être dire que la première occupe les 10 premiers caractères de chaque ligne, la seconde, les 10 suivants, ...

    Après tout dépend de ce que vous voulez faire pour voir comment réaliser chaque opération.

    Vous pouvez aussi réfléchir à mettre X widget Text côte à côte pour matérialiser les différentes colonnes. Ça va sans doute simplifier certaines opérations et en compliquer d'autres.

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

  5. #5
    Invité
    Invité(e)
    Par défaut
    salut,

    Merci pour ces pistes.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Mais existe-t-il une méthode permettant de récupérer l'index du dernier caractère affiché dans text ou au moins la dernière ligne occupée par le dernier caractère affiché ?

    Avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        def command_teste_code(self):
             """ Command pour tester du code """
            self.text0.insert('40.40', 'bonjour')

    c'est étonnant, je tente de modifier la position de mon texte, mais il se borne à ne s'afficher en haut à gauche de mon widget text alors que je m'attendrais à le retrouver à la 40ème colonne de la 40ème ligne.
    Dernière modification par Invité ; 10/04/2021 à 17h39.

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

    Vu que vous insérez une chaine de caractères a une position donnée, la position du dernier caractère inséré sera position + longueur.

    On peut faire quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> w.insert('1.6', 'abc')
    J'insère "abc" à la position 1.6 (qui est aussi ma fin de ligne)
    Position + longueur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> w.index('1.6 + 3c')
    '1.9'
    Et c'est bien ma nouvelle fin de ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> w.index('1.end')
    '1.9'
    >>>
    Les widgets Text (et Canvas) peuvent faire beaucoup de choses mais... la documentation est ardue et arriver à voir comment on va utiliser une fonctionnalité dans un cas ou dans un autre, c'est pas facile.

    Mais en cherchant un peu sur Internet vous allez trouver plein d'exemples qui vous donneront des idées.

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

  8. #8
    Invité
    Invité(e)
    Par défaut
    salut,

    Je comprends votre raisonnement mais ce que je ne saisis pas dans votre exemple, c'est que le texte ne se positionne pas en 1.6, d'emblée, quand aucun texte n'est encore affiché dans Text.

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

    Citation Envoyé par ceststef Voir le message
    ce que je ne saisis pas dans votre exemple, c'est que le texte ne se positionne pas en 1.6, d'emblée, quand aucun texte n'est encore affiché dans Text.
    Si on veut insérer des caractères dans une ligne, on passe un index.
    Si l'index va au delà de la ligne, çà va juste insérer à la fin de ligne (et non créer les 6 caractères d'espacements).

    Dans mon exemple, il y avait déjà 6 caractères et je voulais ajouter à la fin de ligne (pour vous montrer comment on calcule l'indice du denier caractère inséré).

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

  10. #10
    Invité
    Invité(e)
    Par défaut
    Merci.

    J'ai désormais très bien compris comment récupérer l'indice du dernier caractère inséré. C'est très clair et cela va m'être très utile. Je sais déjà comment je vais exploiter ce point.

    Mais navré de me répéter, ce que je ne pige toujours pas, c'est pourquoi lorsque je lance cette ordre dans mon widget text:


    pourquoi 'abc' ne s'affiche t'il pas ligne 1/ colonne 6 (ou à partir du 5ème caractère)

    mais ligne / colonne 0

    Il y a là quelque chose que je ne perçois pas. Quand je "livre" à "insert" la position "1.6",
    je suis convaincu d'être en ligne 1 et en colonne 6, et donc de ne pas être en fin de ligne, enfin je le crois.

    Mon raisonnement est peut être à côté de la plaque mais il me paraît être à tout le moins logique.
    Qu'en pensez-vous ?

    Merci en tout cas, de porter intérêt à pareil cas.

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

    Citation Envoyé par ceststef Voir le message
    Mon raisonnement est peut être à côté de la plaque mais il me paraît être à tout le moins logique.
    Qu'en pensez-vous ?
    Il ne faut pas raisonner avec votre logique mais avec celle du widget.
    De toutes façons, vous n'avez pas trop le choix: c'est comme çà qu'il fonctionne.
    Puis, c'est tout l'intérêt de ces tests: s'assurer qu'on comprend la logique du truc.

    Après vous pouvez toujours récupérer la longueur de la ligne, ajouter ce qu'il faut pour qu'il y ait 6 caractères,... trouver comment réaliser ce que vous voulez.

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

  12. #12
    Invité
    Invité(e)
    Par défaut
    Merci. C'est un enfer pour obtenir quelque chose de rectiligne.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par ceststef Voir le message
    Merci. C'est un enfer pour obtenir quelque chose de rectiligne.
    Il faut peut être utiliser des polices de caractères à espacement constant comme TkFixedFont.

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

  14. #14
    Invité
    Invité(e)
    Par défaut
    Merci.
    Finalement, c'était la solution la plus adaptée, utilise une police à chasse fixe.
    Un grand merci.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 07/12/2020, 13h47
  2. Fusion : insérer du texte depuis d'autres fichiers
    Par wagner51 dans le forum VBA Word
    Réponses: 4
    Dernier message: 21/04/2010, 09h55
  3. [VBA-A]Insérer du texte depuis Access
    Par soad029 dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/03/2006, 15h32
  4. [JAR]ouverture de fichier texte depuis executables jar
    Par julien31 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 01/03/2005, 15h53
  5. [MSDE 2000] Récup champ text depuis proc stockée
    Par Air'V dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/12/2003, 19h47

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