
Виджет
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 является мощным инструментом для создания графики и кастомизированных виджетов. Он имеет множество свойств и методов, которые позволяют создавать и управлять различными графическими объектами.
Содержание: