3

以前に描画した長方形内のtkinterキャンバスにテキストを描画したいと思います。できれば最大許容幅を指定するだけで、テキストを完全に長方形内に描画するようにクリップしたいと思います。tkinterでこれを行う簡単な方法はありますか?そうでない場合は、それを簡単にする他の何かを使用できますか?ありがとう

編集:グラフィックスの意味での「クリッピング」、つまり、オブジェクト(文字列)を完全に表示するのに十分なスペースがあるかのように描画しますが、次のように、指定された境界内にあるオブジェクトの部分のみを描画します。 代替テキストhttp://garblesnarky.net/images/pythontextclip.png

4

2 に答える 2

3

次の行に沿ったもの:

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

おそらく、Label ではなく Entry ウィジェットを使用することもできます

このリンクは非常に興味深いものになる可能性があります: http://effbot.org/zone/editing-canvas-text-items.htm

于 2011-07-14T11:21:21.457 に答える
0

初心者の奇妙な答えに対する小さなパッチ (スライダーを使用して、クリッピングが実際に機能することを示します)。

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()
于 2011-08-03T15:35:14.557 に答える