2009-07-14 8 views
2

Je souhaite dessiner du texte sur une toile tkinter, dans un rectangle précédemment dessiné. Je veux découper le texte à dessiner entièrement dans le rectangle, en espérant simplement en spécifiant une largeur maximale autorisée. Existe-t-il un moyen simple de faire cela dans tkinter? Sinon, pourrais-je utiliser autre chose qui me faciliterait la tâche? Mercidécoupage de texte en python/tkinter

EDIT: "écrêtage" dans un sens graphique, c'est-à dessiner l'objet (la chaîne) comme si il a assez de place pour être affiché dans son intégralité, mais dessiner seulement la partie de l'objet qui est dans le limites, comme ceci: alt text http://garblesnarky.net/images/pythontextclip.png

+0

Je ne pense pas que ce soit faisable en utilisant python contraignant :(désolé. –

Répondre

1

quelque chose le long des lignes de:

from Tkinter import * 
root = Tk() 
c = Canvas(root, width=200, height=200) 
c.pack() 
c.create_rectangle(50,50,91,67, outline='blue') 
t = Label(c, text="Hello John, Michael, Eric, ...", anchor='w') 
c.create_window(51, 51, width=40, height=15, window=t, anchor='nw') 
root.mainloop() 

vous pourriez peut-être même utiliser un widget d'entrée plutôt que d'une étiquette

ce lien pourrait être d'un grand intérêt: http://effbot.org/zone/editing-canvas-text-items.htm

+0

Wow, merci, mais je ne sais même plus ce que je voulais faire quand je pose cette question. – monguin

0

Petit correctif sur noob oddy answer (utilisez un curseur pour illustrer l'écrêtage fonctionne réellement).

from Tkinter import * 
root = Tk() 
c = Canvas(root, width=300, height=100) 
c.pack() 
r = c.create_rectangle(50,50,91,67, outline='blue') 
t = Label(c, text="Hello John, Michael, Eric, ...", anchor='w') 
clip = c.create_window(51, 51, height=15, window=t, anchor='nw') 

def update_clipping(new_width): 
    x,y,w,h = c.coords(r) 
    c.coords(r,x,y,x+int(new_width)+1,h) 
    c.itemconfig(clip,width=new_width) 

s = Scale(root,from_=10, to=200, orient=HORIZONTAL, command=update_clipping) 
s.pack() 

root.mainloop() 
Questions connexes