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
). Также как в случае
координаты задают прямоугольник, в который вписана окружность (или эллипс), из которой «вырезают» сектор, сегмент или дугу. Опции 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
(от англ. west – запад). Другие значения: N
, NE
, E
, SE
, S
, SW
, W
, NW
. Если букв, задающих сторону привязки, две, то вторая определяет вертикальную привязку (вверх или вниз «уйдет» текст от заданной координаты). Свойство
определяет лишь выравнивание текста относительно себя самого.
Создайте на холсте подобное изображение:
Для создания травы используется цикл.
Курс с примерами решений практических работ: 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)
Метод after
вызывает функцию, переданную вторым аргументом, через количество миллисекунд, указанных первым аргументом.
Изучите приведенную программу и самостоятельно запрограммируйте постепенное движение фигуры в ту точку холста, где пользователь кликает левой кнопкой мыши. Координаты события хранятся в его атрибутах x
и y
(event.x
, event.y
).
Курс с примерами решений практических работ: pdf-версия, android-приложение.
Маркизы | C&C Canvas
Позвольте нам решить все ваши потребности в навесах
В C&C Canvas мы предлагаем полный спектр услуг для коммерческих и жилых тентов. Мы можем справиться со всем, от проектирования, строительства и установки до ремонта:
- Коммерческие навесы
- Awnings
- Входные навесы
- Жилые навесы
- .
У вас есть изогнутый фасад здания, очень большое патио или обычная цветовая гамма вашего дома или офиса? Независимо от того, насколько сложными могут показаться ваши требования к навесу, специалисты C&C Canvas помогут вам спроектировать идеальный навес для жилого или коммерческого помещения. Позвольте нам помочь вам украсить вашу собственность красивым и функциональным навесом. Готовы начать? Свяжитесь с нами сегодня!
Специалист по ремонту навесов
Если у вас уже есть коммерческий или жилой навес, возможно, вы ищете надежного подрядчика, который поможет вам обновить или отремонтировать навес. В C & C Canvas мы можем помочь во всем, от структурного ремонта и замены ткани до полного изменения дизайна навеса. Может быть, вы хотите обновить свою цветовую схему, добавить новый логотип в свой тент или расширить его зону покрытия. Или, возможно, вам нужно заменить стареющую ткань на высококачественный продукт, который будет выглядеть свежо и лучше противостоять непогоде. В любом случае, C&C Canvas может предоставить необходимые вам экспертные услуги.
- Residential Walkway Awning
- Decorative Residential Window Awning
- Residential Patio Awning
- Curved Residential Window Awning
- Standard Residential Window Awning
- Жалюзи для жилых помещений
- Стандартные оконные маркизы для жилых помещений
- Commercial Awning
- Commercial Awning
- Commercial Awning
- Commercial Awning
- Commercial Awning
- Commercial Awning
- Коммерческий тент
- Коммерческий тент
- Commercial Awning
- Commercial Awning
- Restaurant Patio
- Commercial Awning
- Commercial Awning
- Commercial Awning
- Торговые маркизы
- Ресторанная маркиза
- Restaurant Awning
- Restaurant Awnings
- Restaurant Awnings
- Restaurant Awnings
- Restaurant Awnings
- Restaurant Awning
- Навес гастронома
- Декоративный навес для жилых помещений
- Store Awning
- Store Awning
- Store Awnings
- Store Awning
- Auto Repair Shop Awning
- Навес для гостиницы
- Навес для гостиницы
- Навес для террасы ресторана и шторы
- Жилой домик для барбекю
Брезент для бортовых грузовиков | Принадлежности для грузоперевозок
БЕСПЛАТНАЯ УСТАНОВКА : стойки от головной боли и ящики для инструментов для ветеранов до конца марта. Только по предварительной записи
БЕЗОПАСНЫЕ ТЕНТЫ И ПРИНАДЛЕЖНОСТИ ДЛЯ ГРУЗОВЫХ УСТРОЙСТВ
Магазин аксессуаров для грузовиков
Магазин грузовой бортовой бортовой грузовой транспорт принадлежности для профессионалов грузоперевозок , бортовые грузовые тенты , выравниватели груза, храповые ремни, банджи-шнуры/резиновые ремни, кабельные цепи, стойки для головной боли со сводчатым сводом Sturdy-Lite и многое другое. Полная линейка полуприцепов с бортовой платформой и грузовых автомобилей .
ПОКУПКИ В МАГАЗИНАХ И УДАЛЕННЫЙ ДОСТУП В НЕРАБОТУ
Профессиональные водители грузовиков
Компания Double C Canvas работает более 30 лет, предлагая высококачественные продукты для контроля грузов, необходимые для обеспечения безопасности на дороге . Компания Double C Canvas, открытая 6 дней в неделю в удобное время, обеспечивает доступность грузоперевозок независимо от вашего графика. Благодаря многолетним знаниям и опыту в сфере грузоперевозок, , вы можете быть уверены, что получаете первоклассные услуги и продукты, которых вы заслуживаете.
ПРОЧНОЕ ГРУЗОВОЕ ОБОРУДОВАНИЕ
Продажа / Установка
Вы ищете высококачественное алюминиевое оборудование и аксессуары для грузовых автомобилей по бесконкурентной цене? Не ищите дальше — у Double C Canvas есть все решения для грузоперевозок! Мы предлагаем широкий ассортимент товаров для грузоперевозок, включая полки для кабины , трехдверные хранилища, подножки, выравниватели груза и многое другое. И что еще лучше, наши специалисты по установке помогут убедиться, что все правильно установлено на вашем грузовике или прицепе. Так что не ждите больше, чтобы ощутить удобство хорошо упакованного трейлера. Получите оборудование премиум-класса от Double C Canvas уже сегодня!
новинки
DC Tarp Products
Добавить в корзину
Добавить в корзину
Добавить в корзину
Добавить в корзину
2-дюймовые храповые ремни, 3 шт. брезента для грузовиков, 8- и 6-футовые откидные сетки, сетки для пчел, брезент для травы и кровельный брезент, брезент для негабаритных грузов, брезентовый экран для дерева
2″ x 40′, желтый храповой механизм в сборе с плоским крюком
38,25 $–
306,00 $Добавить в корзину
Добавить в корзину
2-дюймовые храповые ремни, 3 шт.. Тент для грузовиков, 8- и 6-футовые откидные сетки, сетки для пчел, травяные тенты и кровельные тенты, брезенты Hotshot, тенты для негабаритных грузов, тенты для дыма и рулонов, ЭКРАН ДЛЯ ДЕРЕВА
Paramount 2″ x 30 ′ Храповой механизм в сборе с проволочными крюками
17,00 долл. США–
170,00 долл. СШАДобавить в корзину
8-футовые и 6-футовые капли, сетки для пчел, брезент для травы и кровельный брезент, товары для распродаж, брезент Hotshot, брезент для полуприцепов | Тент для прицепа трактора
4 фута, легкий, черный
290,00 $–
580,00 $
Cargo Control Solutions
Крылья для бортовых грузовиков и принадлежности для грузоперевозок
Защитите свой груз с помощью качественных брезентов для грузовиков: брезент для пиломатериалов, 3 шт. легкие брезенты, брезенты горячего выстрела, стальные брезенты, плоские брезенты, сетки для пчел, травяные брезенты, кровельные брезенты, дымовые брезенты, катушки-ловушки, негабаритные брезенты, пользовательские брезенты доступны.
Double C Canvas
Магазин товаров для грузоперевозок
Магазин принадлежностей для грузовых автомобилей с платформой Double C Canvas, обслуживающий район Далласа и следующие города: Dallas, Fort Worth, Arlington, Grand Prairie, Irving, Mesquite, Garland, Midlothian, Weatherford, Terrel, Mabank, Longview, Denton и другие.
будьте в курсе
подпишитесь на рассылку новостей
Подпишитесь на нашу рассылку, чтобы быть в курсе всех последних продуктов, купонов и скидок.
ОБЗОРЫ GOOGLE
DOUBLE C CANVAS
Я купил стойку для поддонов, и обслуживание клиентов было отличным, владелец дружелюбный и отличный, установка была мгновенной, а отличные цены на продукцию были отличными. Я бы порекомендовал эту компанию и людей всем, кто плохо я могу дать только 5 или я бы дал больше спасибо ребята
Джо Джексон
Позвонили в четверг перед Рождеством, так как мне нужно было заменить брезент перед отъездом на следующей неделе. Парень, который ответил на звонок, подтвердил, что у него есть брезент из трех частей, который мне был нужен, но сказал, что они закрываются рано и не откроются до понедельника. Мы поговорили несколько минут, я объяснил свою проблему, и в настоящее время я был к северу от Далласа. Он предложил взять мою платежную информацию, затем сказал, что оставит их у задних ворот, дал мне номер своего мобильного телефона и сказал, чтобы он позвонил ему, когда я приеду, и он сможет открыть ворота удаленно. Как это для обслуживания клиентов! Эти ребята заработали мой бизнес на всю жизнь.
Крысолюд Роден
Отличные люди, отличный ассортимент, хорошие цены. Мне нравится, что я могу сделать заказ в субботу утром, а затем отправиться туда и забрать его. Открыто до полудня. Владелец хороший парень, участвует в повседневных операциях. Всегда работает над улучшением своего бизнеса, чтобы принести пользу своим клиентам. Только что перестроенный их сайт тому доказательство. Я приглашу их на мою предстоящую выставку HotShot Trucking Show USA в июне 2022 года, первую в своем роде выставку и конференцию для компаний и водителей Hotshot.
Дэвид Кампос, округ Колумбия
Отличный сервис
Карлос Каналес
Классное и приятное место
Кики 1962
Отличное обслуживание клиентов и цены. Стоянка тракторного прицепа для пикапа.
Джереми Рудисел
Приятно иметь место рядом, чтобы получить все, что вам нужно для вашего грузоперевозок или бизнеса.