Canvas

Виджет, холст

class tkinter.Canvas(**kwargs)

Наследник Widget, XView, YView

  • master - родительский виджет
  • cnf - словарь
  • closeenough -
  • confine - булево, выключить скрол холста за пределы региона
  • height - int, высота виджета
  • insertbackground -
  • insertborderwidth -
  • insertofftime -
  • insertontime -
  • insertwidth -
  • offset -
  • scrollregion - кортеж (w, n, e, s), что-то там с покруткой
  • selectbackground -
  • selectborderwidth -
  • selectforeground -
  • state -
  • width - int, ширина виджета
  • xscrollcommand - обработчик горизонтальной прокрутки
  • xscrollincrement - величина горизонтальной прокрутки
  • yscrollcommand - обработчик вертикальной прокрутки
  • yscrollincrement - величина вертикальной прокрутки
canvas = Canvas(master)

# биндим проведение мышкой
canvas.bind("<B1-Motion>", lambda event: pass)
canvas.bind("<Double-1>", lambda event: pass)
canvas = Canvas(
    master,
    width=300,
    height=300,
    bg="white",
    relief=SUNKEN,
)
# холст с прокруткой

canv = Canvas(master)
canv.config(width=300, height=200)
canv.config(scrollregion=(0,0,300, 1000))
canv.config(highlightthickness=0)

sbar = Scrollbar(master)
sbar.config(command=canv.yview)

canv.config(yscrollcommand=sbar.set)
addtag(tag, method, *args)

Добавляет тег элементам

  • tag - тег
  • method - способ добавления
    • above - выше
    • all - всем
    • below - ниже
    • closest - ближе
    • enclosed -
    • overlaping
    • withtag
addtag_above(newtag, tagOrId)

Добавляет новый тег элементу

addtag_all(newtag)

Добавляет новый тег всем элементам

addtag_below(newtag, tagOrId)

Добавляет новый тег элементу

addtag_closest(newtag, x, y, halo=None, start=None)

Добавляет новый тег элементу, который ближе к указанной точке

addtag_enclosed(newtag, x1, y1, x2, y2)

Добавляет тег элементам, в указанной области

addtag_overlapping(self, newtag, x1, y1, x2, y2)

Добавляет тег элементам, перекрывающих указанную область

addtag_withtag(newtag, tagOrId)

Добавляет тег элементу по его идентификатору или тегу

canvas.addtag_withtag("three", "one")
bbox(*args)

Возвращает координаты прямоугльника, в которой находятся указанные объекты холста

head = canvas.find_withtag("head")
x1, y1, x2, y2 = canvas.bbox(head)
canvasx(screenx, gridspacing=None)

Возвращает координату на канвасе по координате экрана

canvasy(screeny, gridspacing=None)

Возвращает координату на канвасе по координате экрана

coords(*args)

Возвращает область, в которой находятся указанные объекты

create_arc(*args, **kwargs)

Рисует круг, вписанную в прямоугольник, и возвращает его идентификатор

  • activedash
  • activefill
  • activeoutline
  • activeoutlinestipple
  • activestipple
  • activewidth
  • dash
  • dashoffset
  • disableddash
  • disabledfill
  • disabledoutline
  • disabledoutlinestipple
  • disabledstipple
  • disabledwidth
  • extent - число, угол, величина рисуемой окружности
  • fill - строка, цвет заполнения
  • offset
  • outline - цвет контура
  • outlineoffset
  • outlinestipple
  • start - число, угол, начало рисования
  • state
  • stipple
  • style
  • tag - название объекта
  • tags
  • width - ширина контура
create_bitmap(*args, **kwargs)
  • activebackground -
  • activebitmap -
  • activeforeground -
  • anchor -
  • background -
  • bitmap -
  • disabledbackground -
  • disabledbitmap -
  • disabledforeground -
  • foreground -
  • state -
  • tags -
create_image(h, w, **kwargs)

Рисует изображение и возвращает его идентификатор

  • activeimage
  • anchor - NW
  • disabledimage
  • image - Image, рисунок
  • state
  • tags
image_id = canvas.create_image(
    height,
    width,
    image=PhotoImage(),
    anchor=NW,
)
create_line(x1, y1, x2, y2, ..., x-n, y-n, **kwargs)

Рисует линию и возвращает его идентификатор

  • activedash
  • activefill
  • activestipple
  • activewidth
  • arrow
  • arrowshape
  • capstyle
  • dash - для рисования штрихами, длина пунктира и пропуска, например (4, 2)
  • dashoffset
  • disableddash
  • disabledfill
  • disabledstipple
  • disabledwidth
  • fill - цвет линии
  • joinstyle
  • offset
  • smooth
  • splinesteps
  • state
  • stipple
  • tags - задает тег для элемента
  • width - ширина линии
line_id = canvas.create_line(
    x1,
    y1,
    x2,
    y2,
    tags="uno",
    fill="green",
    width=10,
)
create_oval(x1, y1, x2, y2, **kwargs)

Рисует овал и возвращает идентификатор

  • activedash
  • activefill
  • activeoutline
  • activeoutlinestipple
  • activestipple
  • activewidth
  • dash
  • dashoffset
  • disableddash
  • disabledfill
  • disabledoutline
  • disabledoutlinestipple
  • disabledstipple
  • disabledwidth
  • fill - цвет заливки
  • offset
  • outline - цвет контура
  • outlineoffset
  • outlinestipple
  • state
  • stipple
  • tags
  • width - ширина границы
oval_id = canvas.create_oval(
    x1,
    y1,
    x2,
    y2,
    fill="red",
    width=2,
)
create_polygon(x1, y1, x2, y2, ..., x-n, y-n, **kwargs)

Рисуем замкнутый контур и возвращает его идентификатор

  • activedash
  • activefill
  • activeoutline
  • activeoutlinestipple
  • activestipple
  • activewidth
  • dash
  • dashoffset
  • disableddash
  • disabledfill
  • disabledoutline
  • disabledoutlinestipple
  • disabledstipple
  • disabledwidth
  • fill - цвет заливки
  • joinstyle
  • offset
  • outline - цвет линии
  • outlineoffset
  • outlinestipple
  • points - список точек
  • smooth
  • splinesteps
  • state
  • stipple
  • tags
  • width - высота линии
create_rectangle(x1, y1, x2, y2, **kwargs)

Рисует многоугольник и возвращает его идентификатор

  • activedash
  • activefill
  • activeoutline
  • activeoutlinestipple
  • activestipple
  • activewidth
  • dash
  • dashoffset
  • disableddash
  • disabledfill
  • disabledoutline
  • disabledoutlinestipple
  • disabledstipple
  • disabledwidth
  • fill - цвет заливки
  • offset
  • outline - цвет контурв
  • outlineoffset
  • outlinestipple
  • state
  • stipple
  • tags
  • width - ширина границ
rectangle_id = canvas.create_rectangle(
    x1,
    y1,
    x2,
    y2,
    width=5,
    fill="red",
)
create_text(x, y, **kwargs)

Рисует текст и возвращает его идентификатор

  • activefill
  • activestipple
  • anchor - W
  • disabledfill
  • disabledstipple
  • fill
  • font - Purisa
  • justify
  • offset
  • state
  • stipple
  • tags
  • text - текст
  • width
text_id = canvas.create_text(
    x,
    y,
    text="Some text",
)
create_window(x, y, window)

Рисует виджет на холсте и возвращает id

  • anchor
  • height
  • state
  • tags
  • width
  • window
canvas.create_window(x, y, widget)
dchars(item, from, to=None)

Удаляет текст из элемента

delete(**kwargs)

Удаляет объекты с холста

apple = canvas.find_withtag('apple')
canvas.delete(apple[0])
dtag(item, tag=None)
find_above(item)
find_all()
find_below(item)
find_closest(x, y, halo=None, start=None)
find_enclosed(x1, y1, x2, y2)
find_overlapping(x1, y1, x2, y2)

Возвращает все объекты, которые находятся в указанной области

find_withtag(tagOrId)

Возвращает список объектов холста, соответсвующих указанному тегу или идентификатору

canvas.find_withtag('one')
# (1, )
focus(item=None)
gettags(*args)

Возвращает теги элементов

canvas.gettags(item)
# ('one', 'two', 'three')
icursor(item, index)
index(item, index)
insert(item, index, text)

Добавляет текст в редактируемый элемент

itemconfig(id, **kwargs)
itemconfigure(id, **kwargs)

Конфигурирует объект рисования

  • tags - изменяет теги объекта
canvas.itemconfig(item, tags=("one", "two"))
itemcget(tagOrId, option)

Возвращает значение свойства элемента

lift()
tkraise()
tag_raise()

Поднимает объект относительно других

lower()
tag_lower()

Опускает объект относитльно других

move(tag, x, y)

Сдвигает объекты

postscript(*args)
scale(tagOrId, xscale, yscale, xoffset, yoffset)

Изменяет размер элемента

scan_dragto(x, y, gain=10)
scan_mark(x, y)
select_adjust(tagOrId, index)
select_clear()
select_from(tagOrId, index)
select_item()
select_to(tagOrId, index)
tag_bind(tagOrId, sequence=None, func=None, add=None)

Связываем обработчик с событиями элемента

canvas.tag_bind(obj_id, "<Double-1>", lambda event: pass)
tag_unbind(tagOrId, sequence, funcid=None)
type(tagOrId)