вырезка текста в python / tkinter - PullRequest
2 голосов
/ 14 июля 2009

Я хочу нарисовать текст на холсте tkinter, внутри ранее нарисованного прямоугольника. Я хочу обрезать текст для рисования полностью внутри прямоугольника, надеюсь, просто указав максимально допустимую ширину. Есть ли простой способ сделать это в tkinter? Если нет, могу ли я использовать что-то еще, что облегчит задачу? Спасибо

РЕДАКТИРОВАТЬ: «обрезать» в графическом смысле, то есть нарисовать объект (строку) так, как если бы он имел достаточно места для отображения в полном объеме, а нарисовать только ту часть объекта, которая находится в указанных границах, как это: альтернативный текст http://garblesnarky.net/images/pythontextclip.png

Ответы [ 2 ]

1 голос
/ 14 июля 2011

что-то вроде:

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

0 голосов
/ 03 августа 2011

Небольшое исправление над 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...