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