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 :

Affichage d'une chaîne avec tkinter [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai Avatar de sterastos
    Homme Profil pro
    electricien
    Inscrit en
    Juin 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2018
    Messages : 5
    Par défaut Affichage d'une chaîne avec tkinter
    Bonjour
    j’ai un petit problème d’affichage d’une chaîne de caractère
    dans tkinter les espaces ne sont pas bien pris en-compte
    ce qui ne rend pas l’affichage voulue
    j’ai fais plusieurs affichage dans label, label frame, canvas .
    Mais rien ni fais avez-vous des solutions*?

    Merci
    ps: j’ai fais un print pour avoir le résultat dans le Terminal

    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
    29
    30
    31
    32
    33
    34
     
    #!/usr/bin/env python3
    #-*-coding:Utf-8 *-*
     
    import tkinter
     
    maFenetre = tkinter.Tk()
    maFenetre.title("Le canvas")
    maFenetre.geometry('600x500')
    monTexte="""OOOOOOOOOO
    O O    O O
    O . OO   O
    O O O   XO
    O OOOO O.O
    O O O    U
    O OOOOOO.O
    O O      O
    O O OOOOOO
    O . O    O
    OOOOOOOOOO
    """
    monCanvas = tkinter.Canvas(maFenetre, width=130, height=200, bg='white')
    monCanvas.create_text(50, 110, text=monTexte)
    monCanvas.grid(row=0, column=0)
     
    monLabel = tkinter.Label(maFenetre, text=monTexte, width=15, height=12)
    monLabel.grid(row=0, column=1)
     
    monLabelFrame = tkinter.LabelFrame(maFenetre, text=monTexte, width=125, height=190)
    monLabelFrame.grid(row=0, column=2)
     
    print("Affichage correcte :\n{}".format(monTexte))
     
    maFenetre.mainloop()

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 062
    Par défaut
    Bonsoir,

    Peut-être le widget Text ?

  3. #3
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Ce n'est pas que les espaces ne sont pas pris en compte, c'est que la police par défaut n'est pas à chasse fixe, donc utiliser une police monospace permettra d'avoir la même largeur pour tous les caractères.

  4. #4
    Membre à l'essai Avatar de sterastos
    Homme Profil pro
    electricien
    Inscrit en
    Juin 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2018
    Messages : 5
    Par défaut
    Merci
    pour la réponse j’ai ajouter un font et cela fonctionne

    pour le widget text on met le texte ou la chaîne de caractère comment a l’intérieur*?

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par sterastos Voir le message
    pour le widget text on met le texte ou la chaîne de caractère comment a l’intérieur*?
    avec Text.insert.

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

  6. #6
    Membre à l'essai Avatar de sterastos
    Homme Profil pro
    electricien
    Inscrit en
    Juin 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2018
    Messages : 5
    Par défaut
    Bonsoir
    j’ai mal posé ma question.
    quand j’ai lue la page de long en large
    le insert ma sauté au yeux et un essai s’imposé mais
    le insert me donne un message d’erreur de bad index
    (self.tk.call((self._w, 'insert', index, chars) + args)
    _tkinter.TclError: bad text index "0")

    donc j’ai supposé que pour avoir un index il faut y mettre un texte avant.
    Voilà le bout de code de mon essai

    petit modification j'ai trouvé mon erreur qui se trouvé dans index mais bon maintenant
    j'affiche mais que la premier lettre

    bon j'ai trouvé ma deuxième erreur qui et simplement la dimension de la fenêtre


    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
     
    #!/usr/bin/env python3
    #-*-coding:Utf-8 *-*
     
    import tkinter
     
    maFenetre = tkinter.Tk()[
     
    monTexte="""OOOOOOOOOO
    O O    O O
    O . OO   O
    O O O   XO
    O OOOO O.O
    O O O    U
    O OOOOOO.O
    O O      O
    O O OOOOOO
    O . O    O
    OOOOOOOOOO
    """
    texte = tkinter.Text(maFenetre, width=11, height=11)
    texte.insert(index='0.0', chars=monTexte)
    texte.grid(row=0, column=3)
     
    maFenetre.mainloop()

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par sterastos Voir le message
    Mais rien ni fais avez-vous des solutions*?
    C'est surtout un problème côté police de caractères.
    Essayez avec du Courrier:
    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
    29
    30
    31
    32
    33
    #!/usr/bin/env python3
    #-*-coding:Utf-8 *-*
     
    import tkinter
     
    maFenetre = tkinter.Tk()
    maFenetre.title("Le canvas")
    maFenetre.geometry('600x500')
    monTexte="""OOOOOOOOOO
    O O    O O
    O . OO   O
    O O O   XO
    O OOOO O.O
    O O O    U
    O OOOOOO.O
    O O      O
    O O OOOOOO
    O . O    O
    OOOOOOOOOO
    """
    monCanvas = tkinter.Canvas(maFenetre, width=130, height=200, bg='white')
    monCanvas.create_text(50, 110, text=monTexte, font=("Courier", 10))
    monCanvas.grid(row=0, column=0)
     
    monLabel = tkinter.Label(maFenetre, text=monTexte, width=15, height=12, font=("Courier", 10))
    monLabel.grid(row=0, column=1)
     
    monLabelFrame = tkinter.LabelFrame(maFenetre, text=monTexte, width=125, height=190, font=("Courier", 10))
    monLabelFrame.grid(row=0, column=2)
     
    print("Affichage correcte :\n{}".format(monTexte))
     
    maFenetre.mainloop()
    çà sera déjà "mieux".

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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2007, 02h38
  2. [GD] Problème d'affichage d'une image avec gd2
    Par turini dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/10/2005, 11h59
  3. Affichage d'une chaîne saisie au clavier
    Par Frenchghost dans le forum Assembleur
    Réponses: 17
    Dernier message: 29/12/2004, 13h11
  4. Problème d'affichage d'une chaîne à l'écran
    Par Bubonik software dans le forum C
    Réponses: 7
    Dernier message: 08/05/2004, 20h47
  5. Saisie et affichage d'une chaîne de caractères
    Par sali dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/03/2004, 18h01

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