Віджет Canvas – клас полотна для малювання.
name = Canvas(window)
name – ім'я полотна для малювання, window – ім'я вікна, на якому воно розташоване.
Клас Canvas створює холсти, на яких можна розміщувати різні фігури. Це робиться за допомогою виклику відповідних методів. Під час розміщення геометричних примітивів вказуються їхні координати на холсті. Точкою відліку є лівий верхній кут.
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
c = Canvas(root, width=200, height=200) # створення полотна шириною та висотою 200
c.pack()
c.create_line(15, 10, 180, 100) # малювання лінії з початком в точці (15,10) та кінцем (180,100)
c.create_line(50, 180, 170, 120, # координати другої лінії
fill='red', # колір лінії
width=5, # ширина лінії
dash=(10, 2), # для малювання штрихами (довжина пунктиру, довжина пропуску)
activefill='yellow', # колір лінії, коли над нею мишка
arrow=LAST, # розміщення стрілки в кінці лінії
arrowshape="10 30 10") # розміри стрілки
root.mainloop() # задання команди відображення вікна при запуску
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
c = Canvas(root, width=200, height=200) # створення полотна шириною та висотою 200
c.pack()
c.create_rectangle(10, 10, 100, 190) # малювання першого прямокутника з лівою верхньою вершиною (10,10) та правою
# нижньою (100,190)
c.create_rectangle(120, 50, 190, 120, # вершини другого прямокутника
fill='lightpink', # колір заливки
outline='blue', # колір межі
width=3, # ширина межі
activedash=(5, 4)) # коли над прямокутником миша, межа стає штриховою
root.mainloop() # задання команди відображення вікна при запуску
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
c = Canvas(root, width=200, height=220) # створення полотна шириною 200 та висотою 220
c.pack()
c.create_oval(10, 10, 190, 100) # малювання першого овалу
c.create_oval(50, 110, 150, 210, # вершини прямокутника, у який вписується овал
width=10, # ширина межі
fill='lightyellow', # колір заливки
outline='lightgreen') # колір межі
root.mainloop() # задання команди відображення вікна при запуску
За допомогою методу create_rectangle() можна побудувати довільний многокутник, задаючи послідовно координати усіх його вершин. Побудуємо трикутник.
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
c = Canvas(root, width=200, height=200) # створення полотна шириною та висотою 200
c.pack()
c.create_polygon(160, 10, 20, 180, 180, 90, # координати вершин трикутника
fill='orange', # колір заливки
outline='black') # колір межі
root.mainloop() # задання команди відображення вікна при запуску
Побудуємо зірку.
from tkinter import *
root = Tk()
c = Canvas(root,
width=200,
height=200)
c.pack()
points = [100, 140, 110, 110, 140, 100, 110, 90, 100, 60, 90, 90, 60, 100, 90, 110]
c.create_polygon(points,
outline='green',
fill='lightblue',
width=3)
root.mainloop()
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
c = Canvas(root, width=200, height=200) # створення полотна шириною та висотою 200
c.pack()
c.create_text(100, 100, # координати центрування тексту
text="I like \nTkinter!", # текст, що відображатиметься на полотні
justify=CENTER, # вирівнювання тексту по центру
font="Verdana 14") # тип і розмір шрифту
root.mainloop() # задання команди відображення вікна при запуску
Залежно від значення параметра style можна отримати сектор (за замовчуванням), сегмент (CHORD) або дугу (ARC). Також, як у випадку create_oval(), координати задають прямокутник, в який вписане коло (або еліпс), з якого "вирізають" сектор, сегмент або дугу. Параметру start присвоюється градус початку фігури, extent визначає кут повороту.
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
c = Canvas(root, width=200, height=200) # створення полотна шириною та висотою 200
c.pack()
c.create_arc(10, 10, 190, 190, start=190, extent=40, fill='blue') # малювання синього сектора
c.create_arc(10, 10, 190, 190, start=80, extent=60, fill='red') # малювання червоного сектора
c.create_arc(10, 10, 190, 190, start=0, extent=60, style=ARC, outline='darkgreen', width=5) # малювання дуги
c.create_arc(10, 10, 190, 190, start=240, extent=100, style=CHORD, fill='yellow') # малювання жовтого сегмента
root.mainloop() # задання команди відображення вікна при запуску