Виджет
Canvas
в Tkinter — это область, предназначенная для рисования фигур, текста, изображений и других объектов. Он является основным инструментом для создания графики в Tkinter и очень полезен для создания кастомизированных виджетов.
Для создания Canvas
в Tkinter, используется следующий синтаксис:
canvas = Canvas(master, option=value, ...)
Здесь master
— это родительский виджет, а option=value
— это пары опций и значений, которые можно использовать для настройки Canvas
.
Виджет Canvas
в Tkinter имеет множество свойств, которые можно настроить во время создания виджета или позже с помощью метода config()
. Некоторые из этих свойств включают:
bg
или background
: задаёт цвет фона виджета. По умолчанию белый.canvas = Canvas(root, bg='blue')
bd
или borderwidth
: ширина границы виджета.canvas = Canvas(root, bd=5)
cursor
: тип курсора, который отображается при наведении на виджет.canvas = Canvas(root, cursor='circle')
highlightbackground
: цвет границы, когда виджет не имеет фокуса.canvas = Canvas(root, highlightbackground='green')
highlightcolor
: цвет границы, когда виджет имеет фокус.canvas = Canvas(root, highlightcolor='red')
highlightthickness
: толщина границы вокруг виджета.canvas = Canvas(root, highlightthickness=2)
height
: высота виджета.canvas = Canvas(root, height=200)
width
: ширина виджета.canvas = Canvas(root, width=300)
relief
: стиль границы виджета. По умолчанию flat
. Другие возможные значения: sunken
, raised
, groove
, и ridge
.canvas = Canvas(root, relief='sunken')
scrollregion
: кортеж из четырех чисел, задающих координаты прямоугольной области для прокрутки (x1, y1, x2, y2).canvas = Canvas(root, scrollregion=(0, 0, 1000, 1000))
xscrollcommand
: связывает виджет скроллинга для горизонтальной прокрутки с Canvas
.scrollbar_x = Scrollbar(root, orient='horizontal')
canvas = Canvas(root, xscrollcommand=scrollbar_x.set)
yscrollcommand
: связывает виджет скроллинга для вертикальной прокрутки с Canvas
.scrollbar_y = Scrollbar(root, orient='vertical')
canvas = Canvas(root, yscrollcommand=scrollbar_y.set)
Canvas
имеет множество методов, которые позволяют управлять объектами на Canvas
и взаимодействовать с ними. Вот некоторые из них:
create_arc()
: Рисует дугу.create_image()
: Рисует изображение.create_line()
: Рисует линию.create_oval()
: Рисует овал.create_polygon()
: Рисует многоугольник.create_rectangle()
: Рисует прямоугольник.create_text()
: Рисует текст.delete()
: Удаляет объект или объекты.move()
: Перемещает объект или объекты.itemconfig()
: Изменяет свойства объекта или объектов.from tkinter import Tk, Canvas
root = Tk()
canvas = Canvas(root, width=400, height=300, bg="white")
canvas.pack()
canvas.create_rectangle(50, 50, 200, 200, fill="blue")
canvas.create_line(0, 0, 200, 200, fill="red", width=3)
root.mainloop()
В этом примере мы создаем Canvas
белого цвета размером 400 на 300 пикселей, затем рисуем на нем синий прямоугольник и красную линию.
Canvas
использует систему координат, в которой верхний левый угол области отображения имеет координаты (0, 0), а оси X и Y направлены вправо и вниз соответственно.
Можно связать функцию с любым событием мыши или клавиатуры на Canvas
. Это делается с помощью метода bind()
, который принимает тип события и функцию в качестве аргументов.
def on_click(event):
x, y = event.x, event.y
canvas.create_oval(x-5, y-5, x+5, y+5, fill="red")
canvas.bind("<Button-1>", on_click)
В этом примере мы связываем функцию on_click()
с событием нажатия левой кнопки мыши на Canvas
. Когда пользователь кликает на Canvas
, рисуется красный круг.
Когда вы создаете объект на Canvas
(например, с помощью метода create_rectangle()
), этот метод возвращает идентификатор объекта, который можно использовать для управления этим объектом в дальнейшем. Например, можно изменить свойства объекта или переместить его.
id = canvas.create_rectangle(50, 50, 100, 100)
canvas.itemconfig(id, fill="blue")
canvas.move(id, 10, 10)
Вы можете присваивать тэги объектам на Canvas
и использовать эти тэги для управления группами объектов. Это может быть очень полезно, когда вам нужно управлять большим количеством объектов.
canvas.create_oval(50, 50, 100, 100, fill="red", tags="red_shapes")
canvas.create_rectangle(150, 50, 200, 100, fill="red", tags="red_shapes")
canvas.delete("red_shapes")
Виджет Canvas
в Tkinter является мощным инструментом для создания графики и кастомизированных виджетов. Он имеет множество свойств и методов, которые позволяют создавать и управлять различными графическими объектами.
Содержание: