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 :

texte dégueulasse dans canvas


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    www.belleskmer.com
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations professionnelles :
    Activité : www.belleskmer.com

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut texte dégueulasse dans canvas
    bonjour
    merci pour vos réponses

    je veux afficher le texte lettre par lettre et j'obtiens un résultat douteux meme en décalant le texte avec la bonne largeur obtenue par measure

    une idée ?


    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import MySQLdb
    from Tkinter import *
    import tkFont
    from ScrolledText import *
    import os
     
     
     
     
    class Application(object):
        def __init__(self):
     
     
            self.root=Tk()
            self.root.title('pygvz')
    #        print tkFont.families()
            self.patFont = tkFont.Font(root=self.root,family='Liberation Serif', size=12 )
            self.codeToArray={}
            # lecture des dimensions de l'ecran
     
            self.w, self.h = self.root.winfo_screenwidth(), self.root.winfo_screenheight()
            print self.w , self.h
            self.root.geometry("%dx%d+0+0" % (self.w, self.h))
     
            #fen1.overrideredirect(1) # permet de cacher le menu haut
     
            # fenetre 1 bouton contextuel
            self.fen1=Frame(self.root,bg='lightblue')
            self.fen1.grid(row=0, column = 0,sticky='NW')
            self.bou1 = Button(self.fen1, text='Quitter', command = self.root.destroy,height=1)
            self.bou1.grid(row=0,column=0)
     
     
            # fenetre 2 le fichier texte
            self.fen2=Frame(self.root,bg='pink')
            self.fen2.grid(row=0, column = 1,sticky='NW')
            self.canvas = Canvas ( self.fen2 , width=600 , height=500 , bg='white' )
            self.canvas.grid( row = 0 , column = 1 )
            self.canvas.bind("<Button-1>", self.callback)
            self.init_source()
            self.code = self.canvas.create_text(10,10,text='bonjour', font = self.patFont)
            self.i = 0
            self.x = 50
            self.y = 20
            while self.i< len(self.texte):
     
                if self.texte[self.i]== '\n' :
                    self.x = 50
                    self.y += 20
                else :
                    #self.font = font = "Helvetica 12"
                    self.code = self.canvas.create_text(self.x,self.y,text=self.texte[self.i], font = self.patFont)
                    print self.texte[self.i] +  ' '  + str(self.patFont.measure(self.texte[self.i])) 
                    self.codeToArray[self.code] = (self.x,self.y)
                    self.x += self.patFont.measure(self.texte[self.i]) - 1
                self.i += 1
            self.root.mainloop()
     
        def callback(self,event):
            self.x1, self.y1 = event.x, event.y
            print str(event.x) + ' ' + str(event.y)
            self.endroit = []
            self.endroit =(event.x,event.y)
            self.selObject = self.canvas.find_closest(self.x1, self.y1)
            print self.selObject
            print 'dimensions : '
            print self.selObject[0].winfo_width()
     
     
        def init_source(self):
            self.fichier = open('test.txt','r')
            self.texte = self.fichier.read() 
            self.fichier.close()
     
     
        def replaceTexte():
            self.texte = self.texte.replace('=',' = ')
     
     
        def handler(self,event):
            print self.bouton[event.widget]
            self.efface_DB(self.bouton[event.widget])
     
    if __name__ == '__main__':
     
        f= Application()
    le contenu du fichier test.txt :
    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
     
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    gris incolore blanc bleu jaune marron noir rouge vert
    merci pour vos réponses

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

    C'est "dégueu" est une notion assez relative.
    Si vous essayez d'afficher le texte "normalement" et comparé à ce qui a été calculé, çà donne:
    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
    import tkinter as tk
    from tkinter.font import Font
     
    canvas = tk.Canvas()
    font = Font(family='Liberation Serif', size=12)
    canvas.pack()
    texte = 'gris incolore blanc bleu jaune marron noir rouge vert'
    y = 10
    x = 10
    for ix, c in enumerate(texte):
        canvas.create_text(x, y, text=c, font=font, anchor='w')
        x += font.measure(c) 
     
    x = 10
    y = 40
    canvas.create_text(x, y, text=texte, font=font, anchor='w')
    tk.mainloop()
    A l'oeil, le résultat est identique.

    - W

  3. #3
    Membre du Club
    www.belleskmer.com
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations professionnelles :
    Activité : www.belleskmer.com

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut tout pareil sauf
    Nom : Capture du 2015-05-08 19:05:11.png
Affichages : 199
Taille : 6,0 Ko

    bonsoir
    on aurait pas la meme version de tkinter

    j'espere que tu pourras voir à quel résultat je parviens !

    merci pour vos réponses

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 292
    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 292
    Points : 36 788
    Points
    36 788
    Par défaut
    Citation Envoyé par menthol34 Voir le message
    j'espere que tu pourras voir à quel résultat je parviens !
    Vous avez bien sur noté que je ne soustrais pas 1 pixel au retour de .measure...
    Et que je compare le texte affiché caractère par caractère a celui affiche d'un seul bloc.

    - W

  5. #5
    Membre du Club
    www.belleskmer.com
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations professionnelles :
    Activité : www.belleskmer.com

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    bonjour

    oui le -1 dans le calcul n'est que les restes de tentatives désespérées pour corriger le probleme


    bon j'aurais pas compris ça mais j'ai obtenu une autre piste sur un autre forum en utilisant create_text ainsi que les tags avec un exemple clair et concis pour l'utilisation de l'un et l'autre


    merci pour vos réponses

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 292
    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 292
    Points : 36 788
    Points
    36 788
    Par défaut
    Citation Envoyé par menthol34 Voir le message
    bon j'aurais pas compris ça mais j'ai obtenu une autre piste sur un autre forum en utilisant create_text ainsi que les tags avec un exemple clair et concis pour l'utilisation de l'un et l'autre.
    Oui, on vous y parle du widget Text.
    Mais je suppose toujours naïvement que vous avez fait votre home work quand au choix du bon widget pour ce que vous voulez réaliser.

    - W

  7. #7
    Membre du Club
    www.belleskmer.com
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations professionnelles :
    Activité : www.belleskmer.com

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut homework
    bonjour

    je dois avouer que les exemples de tkinter selon les versions fonctionnent ou ne fonctionnent pas.

    je n'avais jamais vu fonctionner text et l'exemple etait suffisament parlant

    merci pour vos réponses

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 292
    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 292
    Points : 36 788
    Points
    36 788
    Par défaut
    Citation Envoyé par menthol34 Voir le message
    je dois avouer que les exemples de tkinter selon les versions fonctionnent ou ne fonctionnent pas.
    De mémoire, vous utilisez la même version de tkinter (Tk 8.5) depuis la version 2.5 de Python et jusqu'à la version 3.3. La version 3.4 (de Python) vient avec Tk 8.6 et je n'ai pas constaté de changement notable sur les applications existantes.
    note: pas constaté != il n'y en a pas.

    - W

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

Discussions similaires

  1. Collection d'images et de textes déplaçables dans un Canvas
    Par Lelio1407 dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 04/04/2011, 13h32
  2. Text vertical dans Tkinter canvas text
    Par jcgarreau dans le forum Tkinter
    Réponses: 4
    Dernier message: 15/08/2009, 00h29
  3. [Tkinter] Créa et modif texte dans canvas
    Par airod dans le forum Tkinter
    Réponses: 2
    Dernier message: 27/08/2006, 00h24
  4. Agir sur le texte entré dans un éditeur
    Par FatalError dans le forum C++
    Réponses: 1
    Dernier message: 24/10/2004, 14h54
  5. VB6] imprimer le texte afficher dans une picturebox
    Par Persons dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/08/2004, 11h15

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