我想在先前绘制的矩形内的 tkinter 画布上绘制文本。我想剪辑要完全在矩形内绘制的文本,希望只指定最大允许宽度。在 tkinter 中是否有一种简单的方法可以做到这一点?如果没有,我可以使用其他可以使它更容易的东西吗?谢谢
编辑:图形意义上的“剪辑”,即绘制对象(字符串),就好像它有足够的空间来完全显示,但只绘制对象在指定范围内的部分,如下所示: 替代文字 http://garblesnarky.net/images/pythontextclip.png
我想在先前绘制的矩形内的 tkinter 画布上绘制文本。我想剪辑要完全在矩形内绘制的文本,希望只指定最大允许宽度。在 tkinter 中是否有一种简单的方法可以做到这一点?如果没有,我可以使用其他可以使它更容易的东西吗?谢谢
编辑:图形意义上的“剪辑”,即绘制对象(字符串),就好像它有足够的空间来完全显示,但只绘制对象在指定范围内的部分,如下所示: 替代文字 http://garblesnarky.net/images/pythontextclip.png
类似于:
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
菜鸟奇怪答案上的小补丁 (使用滑块来说明剪辑实际有效)。
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()