2009-07-14 65 views
2

我想在tkinter畫布上繪製文本,在之前繪製的矩形內。我想剪切完整的矩形內的文本,希望通過指定一個最大允許的寬度。有沒有一種簡單的方法可以在tkinter中做到這一點?如果沒有,我可以使用其他方法來使它更容易嗎?謝謝在python/tkinter中剪裁文本

編輯:在圖形意義上「裁剪」,即繪製對象(字符串),就好像它有足夠的空間可以完整顯示,但只繪製指定對象的部分界限,像這樣: alt text http://garblesnarky.net/images/pythontextclip.png

+0

然後,我不認爲使用Python綁定:(遺憾是可行的。 – 2009-07-16 23:40:45

回答

1

東西沿着線:

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() 

也許你甚至可以用一個錄入部件,而不是一個標籤

這個環節可能是相當大的興趣: http://effbot.org/zone/editing-canvas-text-items.htm

+0

哇,謝謝,但我甚至不記得什麼,我試圖做的,當我問到這個問題。 – monguin 2011-07-15 04:20:10

0

noob oddy answer的小補丁(使用滑塊來說明剪切實際上起作用)。

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()