Основы программирования
Для групп: 1003ПК и 1004ПК
Преподаватель: Драгунов С.С.
Тема 8 – Графические объекты (часть 2). На основе виджета Canvas
Введение
В tkinter от класса Canvas создаются объекты-холсты, на которых можно "рисовать", размещая различные фигуры и объекты. Делается это с помощью вызовов соответствующих методов.
При создании экземпляра Canvas необходимо указать его ширину и высоту. При размещении геометрических примитивов и других объектов указываются их координаты на холсте. Точкой отсчета является верхний левый угол (Рисунок 1).
Рисунок 1
Метод.create_line()
В программе, представленной ниже, создается холст и с помощью метода «.create_line()» рисуется отрезок. Сначала указываются координаты начала (x1, y1), затем – конца (x2, y2).
from tkinter import *
root = Tk()
c = Canvas(root, height=200, bg='white')
C.pack()
C.create_line(10, 10, 190, 50)
Root.mainloop()
В этой программе создается холст с именем «с» с помощью метода Canvas. В круглых скобках записаны аргументы. Первый аргумент определяет расположение холста в окне «root». Второй аргумент «width» определяет ширину холста в 200 пикселей. Третий аргумент «height» определяет высоту холста в 200 пикселей. Четвертый аргумент «bg» определяет цвет холста, в данном случае – белый.
|
|
Метод упаковки «.pack()» определяет расположение холста с именем «с» в окне «root». Поскольку метод «.pack()» без аргументов и размеры окна «root» не определены, то холст занимает всю площадь окна.
В этой программе у метода create_line() заданы только четыре основных аргумента. Первые два аргумента определяют его начало, а третий и четвертый – его конец. Поэтому по умолчанию получаем толщину линии в один пиксел черного цвета.
Результат выполнения программы представлен на рисунке 2.
Рисунок 2
Для того чтобы сделать линию толщиной в три пиксела красного цвета, надо добавить строку программы, где создается отрезок, еще два аргумента:
c.create_line(10, 10, 190, 50, fill="red")
Результат выполнения программы с изменениями представлен на рисунке 3.
Рисунок 3
Для того чтобы на конце сделать стрелку, необходимо добавит еще два аргумента «arrow=LAST» и «arrowshape ="10 20 10"». Аргумент «arrow=LAST» выполняет стрелку на конце отрезка. Аргумент «arrow = FIRST» выполняет стрелку в начале отрезка. Три значения, аргумента «arrowshape ="10 20 10"», записанные в кавычках через пробел, определяют размер стрелки. Первое значение, - внутренняя длина стрелки в пикселах. Второе значение, - внешняя длина стрелки в пикселах. Третье значение, - ширина стрелки в пикселах.
Результат выполнения программы с изменениями представлен на рисунке 4.
Рисунок 4
Чтобы отрезок был выполнен пунктирной линией, надо добавить еще один аргумент «dash=(20,5)». Первое значение, длина штриха в относительных величинах. Второе значение длина пробела.
|
|
Чтобы отрезок изменял свой начальный цвет на другой при наведении на него мышкой, необходимо добавить еще один аргумент «activefill='blue'», в данном примере голубой.
Результат выполнения программы с изменениями представлен на рисунке 5.
Рисунок 5
8.2 Метод.create_ rectangle():
Методом «.create_rectangle()» создают прямоугольники. Обязательными являются четыре аргумента. Первые два аргумента определяют верхний левый угол прямоугольника (координаты х и y). Третий и четвертый, - нижний правый.
from tkinter import *
root = Tk()
c = Canvas(root, height=200, bg='white')
C.pack()
c.create_ rectangle (10, 10, 190, 90)
Root.mainloop()
Результат выполнения программы представлен на рисунке 6.
Рисунок 6
Для того чтобы сделать линию толщиной в 4 пиксела желтого цвета, надо добавить с строку программы, где создается прямоугольник, еще два аргумента:
c.create_ rectangle (10, 10, 190, 90, outline='yellow')
Если вы желаете, чтобы при наведении мышкой эту рамку линия рамки становилась пунктирной и изменяла цвет на красный, то надо добавить еще два аргумента:
c.create_ rectangle (10, 10, 190, 90, outline='yellow',
activedash=(5, 4), activeoutline = 'red')
Результат выполнения программы с изменениями представлен на рисунке 7.
Рисунок 7
Для заливки внутренности прямоугольника другим цветом используется аргумент fill='green', в данном случае зеленым. Для того, чтобы цвет заливки изменялся на красный нужно добавить еще один аргумент activefill = 'red'
c.create_ rectangle (10, 10, 190, 90, outline='yellow',
activedash=(5, 4), activeoutline = 'red', fill='green', activefill = 'red')
Результат выполнения программы с изменениями представлен на рисунке 8.
Рисунок 8
8.3 Метод.create_ polygon():
Методом.create_polygon() создают многоугольник произвольный формы путем задания координат каждой его вершины. Обязательным является количество аргументов, соответствующее удвоенному количеству вершин многоугольника. Первое значение пары, - координата х, второе значение пары, - координата y. Например для построения треугольника программа будет выглядеть так:
from tkinter import *
root = Tk()
c = Canvas(root, height=200, bg='white')
C.pack()