剪辑python / tkinter中的文本

时间:2009-07-14 04:45:47

标签: python tkinter

我想在先前绘制的矩形内的tkinter画布上绘制文本。我想剪切要在矩形内完全绘制的文本,希望只指定一个允许的最大宽度。在tkinter中有一种直接的方法吗?如果没有,我可以使用其他更容易的东西吗?感谢

编辑:在图形意义上的“剪裁”,即绘制对象(字符串),好像它有足够的空间来完整显示,但只绘制在指定范围内的对象部分,像这样: alt text http://garblesnarky.net/images/pythontextclip.png

2 个答案:

答案 0 :(得分: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()

也许您甚至可以使用Entry小部件而不是Label

此链接可能非常有趣: http://effbot.org/zone/editing-canvas-text-items.htm

答案 1 :(得分: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()