Canvas. Урок 9 курса «Tkinter. Программирование GUI на Python»
В tkinter
от класса Canvas
создаются объекты-холсты, на которых можно «рисовать», размещая различные фигуры и объекты. Делается это с помощью вызовов соответствующих методов.
При создании экземпляра Canvas
необходимо указать его ширину и высоту. При размещении геометрических примитивов и других объектов указываются их координаты на холсте. Точкой отсчета является верхний левый угол.
В программе ниже создается холст. На нем с помощью метода create_line
рисуются отрезки. Сначала указываются координаты начала (x1, y1), затем – конца (x2, y2).
from tkinter import * root = Tk() c = Canvas(root, width=200, height=200, bg='white') c.pack() c.create_line(10, 10, 190, 50) c.create_line(100, 180, 100, 60, fill='green', width=5, arrow=LAST, dash=(10,2), activefill='lightgreen', arrowshape="10 20 10") root.mainloop()
Остальные свойства являются необязательными. Так activefill
определяет цвет отрезка при наведении на него курсора мыши.
Создание прямоугольников методом create_rectangle
:
… c.create_rectangle(10, 10, 190, 60) c.create_rectangle(60, 80, 140, 190, fill='yellow', outline='green', width=3, activedash=(5, 4)) …
Первые координаты – верхний левый угол, вторые – правый нижний. В приведенном примере, когда на второй прямоугольник попадает курсор мыши, его рамка становится пунктирной, что определяется свойством activedash
Методом create_polygon
рисуется произвольный многоугольник путем задания координат каждой его точки:
… c.create_polygon(100, 10, 20, 90, 180, 90) c.create_polygon(40, 110, 160, 110, 190, 180, 10, 180, fill='orange', outline='black') …
Для удобства координаты точек можно заключать в скобки:
… c. create_polygon((40, 110), (160, 110), (190, 180), (10, 180), fill='orange', outline='black') …
Метод create_oval
создает эллипсы. При этом задаются координаты гипотетического прямоугольника, описывающего эллипс. Если нужно получить круг, то соответственно описываемый прямоугольник должен быть квадратом.
… c.create_oval(50, 10, 150, 110, width=2) c.create_oval(10, 120, 190, 190, fill='grey70', outline='white') …
Более сложные для понимания фигуры получаются при использовании метода create_arc
. В зависимости от значения опции style
можно получить сектор (по умолчанию), сегмент (CHORD
) или дугу (ARC
). Также как в случае create_oval
координаты задают прямоугольник, в который вписана окружность (или эллипс), из которой «вырезают» сектор, сегмент или дугу. Опции start
extent
определяет угол поворота.… c.create_oval(10, 10, 190, 190, fill='lightgrey', outline='white') c.create_arc(10, 10, 190, 190, start=0, extent=45, fill='red') c.create_arc(10, 10, 190, 190, start=180, extent=25, fill='orange') c.create_arc(10, 10, 190, 190, start=240, extent=100, style=CHORD, fill='green') c.create_arc(10, 10, 190, 190, start=160, extent=-70, style=ARC, outline='darkblue', width=5) …
В данном примере светло-серый круг используется исключительно для наглядности.
На холсте можно разместить текст. Делается это с помощью метода create_text
:
… c.create_text(100, 100, text="Hello World,\nPython\nand Tk", justify=CENTER, font="Verdana 14") c.create_text(200, 200, text="About this", anchor=SE, fill="grey") …
По умолчанию в заданной координате располагается центр текстовой надписи. Чтобы изменить это и, например, разместить по указанной координате левую границу текста, используется якорь со значением W
N
, NE
, E
, SE
, S
, SW
, W
, NW
. Если букв, задающих сторону привязки, две, то вторая определяет вертикальную привязку (вверх или вниз «уйдет» текст от заданной координаты). Свойство justify
определяет лишь выравнивание текста относительно себя самого.Создайте на холсте подобное изображение:
Для создания травы используется цикл.
Курс с примерами решений практических работ: pdf-версия, android-приложение.
Canvas. Идентификаторы, теги и анимация. Урок 10 курса «Tkinter»
Изучив размещение геометрических примитивов на экземпляре Canvas, в этом уроке рассмотрим, как можно обращаться к уже созданным фигурам для изменения их свойств, а также создадим анимацию.
В Tkinter существует два способа «пометить» фигуры, размещенные на холсте, – это идентификаторы и теги. Первые всегда уникальны для каждого объекта. Два объекта не могут иметь одни и тот же идентификатор. Теги не уникальны. Группа объектов на холсте может иметь один и тот же тег. Это дает возможность менять свойства всей группы. Отдельно взятая фигура на Canvas может иметь как идентификатор, так и тег.
Идентификаторы
Методы, создающие фигуры на холсте, возвращают численные идентификаторы этих объектов, которые можно присвоить переменным, через которые позднее обращаться к созданным фигурам.
from tkinter import * root = Tk() c = Canvas(width=300, height=300, bg='white') c.focus_set() c.pack() ball = c.create_oval(140, 140, 160, 160, fill='green') c.bind('<Up>', lambda event: c.move(ball, 0, -2)) c.bind('<Down>', lambda event: c.move(ball, 0, 2)) c.bind('<Left>', lambda event: c. move(ball, -2, 0)) c.bind('<Right>', lambda event: c.move(ball, 2, 0)) root.mainloop()
В данном примере круг двигается по холсту с помощью стрелок на клавиатуре. Когда создавался круг, его идентификатор был присвоен переменной move
объекта Canvas принимает идентификатор и смещение по осям.
С помощью метода itemconfig
можно изменять другие свойства. Метод coords
устанавливает новые координаты фигуры, если они заданы. Если указывается только идентификатор или тег, то coords
возвращает текущие координаты.
from tkinter import * root = Tk() c = Canvas(width=200, height=200, bg='white') c.pack() rect = c.create_rectangle( 80, 80, 120, 120, fill='lightgreen') def in_focus(event): c.itemconfig(rect, fill='green', width=2) c.coords(rect, 70, 70, 130, 130) c.bind('<FocusIn>', in_focus) root.mainloop()
Здесь при получении холстом фокуса (нажать Tab) изменится цвет и размер квадрата.
Теги
В отличие от идентификаторов, которые являются уникальными для каждого объекта, один и тот же тег может присваиваться разным объектам. Дальнейшее обращение к такому тегу позволит изменить все объекты, в которых он был указан. В примере ниже эллипс и линия содержат один и тот же тег, а функция color
изменяет цвет всех объектов с тегом group1
. Обратите внимание, что в отличие от имени идентификатора (переменная), имя тега заключается в кавычки (строковое значение).
from tkinter import * def color(event): c.itemconfig('group1', width=3, fill="red") root = Tk() c = Canvas(width=460, height=150, bg='white') c.pack() oval = c.create_oval(30, 10, 130, 80, tag="group1") c.create_line(10, 100, 450, 100, tag="group1") c.bind('<Button-3>', color) root.mainloop()
Метод tag_bind
позволяет привязать событие (например, щелчок кнопкой мыши) к определенной фигуре на Canvas. Таким образом, можно реализовать обращение к различным областям холста с помощью одного и того же события. Пример ниже иллюстрирует, как изменения на холсте зависят от того, где произведен клик.
from tkinter import * def oval_func(event): c.delete(oval) c.create_text(80, 50, text="Круг") def rect_func(event): c.delete("rect") c.create_text(230, 50, text="Прямоугольник") def triangle(event): c.delete(trian) c.create_text(380, 50, text="Треугольник") c = Canvas(width=460, height=100, bg='grey80') c.pack() oval = c.create_oval(30, 10, 130, 80, fill="orange") c.create_rectangle(180, 10, 280, 80, tag="rect", fill="lightgreen") trian = c.create_polygon( 330, 80, 380, 10, 430, 80, fill='white', outline="black") c.tag_bind(oval, '<Button-1>', oval_func) c.tag_bind("rect", '<Button-1>', rect_func) c.tag_bind(trian, '<Button-1>', triangle) mainloop()
Метод delete
удаляет объект. Если нужно очистить холст, то вместо идентификаторов или тегов используется константа ALL
.
Практическая работа. Анимация в tkinter
В данной программе создается анимация круга, который движется от левой границы холста до правой:
from tkinter import * def motion(): c.move(ball, 1, 0) if c.coords(ball)[2] < 300: root.after(10, motion) root = Tk() c = Canvas(root, width=300, height=200, bg="white") c.pack() ball = c.create_oval(0, 100, 40, 140, fill='green') motion() root.mainloop()
Выражение c.coords(ball)
возвращает список текущих координат объекта (в данном случае это ball). Третий элемент списка соответствует его второй координате x.
Метод after
вызывает функцию, переданную вторым аргументом, через количество миллисекунд, указанных первым аргументом.
Изучите приведенную программу и самостоятельно запрограммируйте постепенное движение фигуры в ту точку холста, где пользователь кликает левой кнопкой мыши. Координаты события хранятся в его атрибутах x
и y
(event.x
, event.y
).
Курс с примерами решений практических работ: pdf-версия, android-приложение.
Маркизы | C&C Canvas
Позвольте нам решить все ваши потребности в навесах
В C&C Canvas мы предлагаем полный спектр услуг для коммерческих и жилых навесов. Мы можем выполнить все, от проектирования, строительства и установки до ремонта:
- Коммерческие маркизы
- Патио маркизы
- Входные маркизы
- Жилые маркизы
- Световые маркизы
- 90 90
- Выдвижные маркизы 0002 Индивидуальный дизайн и установка навеса
У вас есть изогнутый фасад здания, очень большое патио или обычная цветовая гамма вашего дома или офиса? Независимо от того, насколько сложными могут показаться ваши требования к навесу, специалисты C&C Canvas помогут вам спроектировать идеальный навес для жилого или коммерческого помещения. Позвольте нам помочь вам украсить вашу собственность красивым и функциональным навесом.
Готовы начать? Свяжитесь с нами сегодня!
Специалист по ремонту навесов
Если у вас уже есть коммерческий или жилой навес, возможно, вы ищете надежного подрядчика, который поможет вам обновить или отремонтировать навес. В C & C Canvas мы можем помочь во всем, от структурного ремонта и замены ткани до полного изменения дизайна навеса. Может быть, вы хотите обновить свою цветовую схему, добавить новый логотип в свой тент или расширить его зону покрытия. Или, возможно, вам нужно заменить стареющую ткань на высококачественный продукт, который будет выглядеть свежо и лучше противостоять непогоде. В любом случае, C&C Canvas может предоставить необходимые вам экспертные услуги.
- Навес для прохода в жилом доме
- Декоративный навес для окна в жилом доме
- Навес для патио в жилом доме 9003 8 54 99 9003 030
- Изогнутая оконная маркиза для жилых помещений
- Стандартная оконная маркиза для жилых помещений
- Жалюзи для жилых помещений
- Стандартные оконные маркизы для жилых помещений
- Коммерческий тент
- Коммерческий тент
- 5030 9030 Коммерческий тент 90
- Коммерческий тент
- Коммерческий тент
- Коммерческий тент
- Коммерческий тент
- Коммерческий тент
- Навес для коммерческих помещений
- Навес для коммерческих помещений
- 5
- Ресторанный дворик 9003 0030
- Коммерческий навес
- Коммерческий навес
- Коммерческий навес
- Торговые маркизы
- Ресторанная маркиза
- Навес для ресторана
- Навес для ресторана
- 905 90 3034 Навес для ресторана 0
- Навесы для ресторанов
- Навесы для ресторанов
- Навесы для ресторанов
- Навес гастронома
- Декоративный навес для жилых помещений
- Навес магазина
- Навес магазина
- 90 305 3033 90 Навесы магазина
- Навес магазина
- Навес автомастерской
- Навес для отеля
- Навес для отеля
- Навес для террасы ресторана и шторы
- Барбекю в жилом доме
Тесты Canvas – Canvas
В настоящее время в Canvas есть два варианта опросов, доступных для инструкторов. Классические викторины, которые были доступны для всех пользователей с тех пор, как CSU принял Canvas, и новые викторины, представляющие собой новую функцию викторин, добавленную в Canvas, которая в конечном итоге заменит классические викторины.
Новые викторины доступны во всех курсах CSU Canvas, и пользователям рекомендуется начать использовать новые викторины сейчас, чтобы привыкнуть к изменениям до полного перехода от классических викторин.
Canvas удалил конкретную временную шкалу для реализации новых викторин, пока они работают над реализацией этих функций. Мы работаем с Canvas над ключевыми функциями, которые мы хотели бы видеть в новых викторинах, и будем держать кампус в курсе, когда эти элементы станут доступны.
Используя приведенные ниже критерии, мы рекомендуем инструкторам попробовать новые тесты, чтобы получить представление о новом инструменте и его функциях.
Новый редактор расширенного содержимого с отключенным кодом LaTex и HTML в новых викторинах
Canvas отключил новый редактор расширенного содержимого в новых викторинах из-за ошибки, https://community. canvaslms.com/t5/The-Product-Blog/Turning-Off-the-New-Rich-Content-Editor-in- Новые викторины/ba-p/550133. Новые викторины теперь имеют предыдущую версию редактора расширенного содержимого.
Когда переходить на новые викторины
- Если вы только начинаете работать с викторинами Canvas, мы настоятельно рекомендуем вам использовать новые викторины
- Если вы полагаетесь на стандартные типы вопросов; множественный выбор, множественный ответ, заполнение одного или нескольких пропусков, верно неверно или эссе
- Если вы заинтересованы в опробовании новых типов вопросов викторины, категоризации, горячих точек и упорядочении или хотите добавить в викторину стимулирующий контент
- Чтобы использовать новые настройки размещения для обучения, которые включают добавление или удаление времени для всех попыток прохождения теста, а также умножение временных ограничений на заданный множитель
- Варианты переоценки теперь доступны практически для всех типов вопросов
- Если вы в настоящее время используете классические тесты, которые не полагаются на банки вопросов
Зачем продолжать использовать классические викторины
- Если вам нужно преобразовать банки вопросов в банки заданий
- Если вам нужно экспортировать аналитику викторины
- Если вы хотите использовать опрос
Мы ожидаем, что большинство, если не все, функции Canvas будут работать в ближайшие год или два. В это время мы будем работать с кампусом, чтобы завершить переход от классических к новым викторинам.
Новые викторины
Новые викторины — это новый инструмент оценки, созданный для удовлетворения текущих и будущих потребностей в оценке в вашем классе.
Новые усовершенствования функций включают в себя;
- Период ожидания между несколькими попытками
- Возможность перемешивать вопросы в викторине
- Дополнительные параметры распознавания пустых слов
- Возможность предоставить учащемуся временную компенсацию для всех попыток прохождения викторины в рамках курса.
- Новые типы вопросов, в том числе; категоризация, стимул, горячая точка и упорядочение.
Посмотрите сравнение возможностей новых и классических викторин.
Новые ресурсы для викторин
- Холст Руководства по новым викторинам
- Canvas New Quizzs Video Обзор
- 2021 PDI New Quizzes Обзор видео
- Обзор новых викторин
- Варианты переноса классической викторины и банка вопросов
Прокторинг для новых викторин
Respondus LockDown Browser + Monitor работает с новыми викторинами.