Как сделать рисовалку на python
Введение в Python
Поиск
Новое на сайте
Примитивный Paint на Python
В данной статье мы напишем простенькую рисовалку на Python. На этом примере мы потренируемся в создании GUI, использовании макетов компоновки в tkinter, передаче дополнительных аргументов в функцию-обработчик нажатия кнопки и использовании lambda-функции в Python.
Для этого примера удобнее будет использовать классовый подход к созданию GUI. Для начала определим класс Paint:
Запустив этот код вы должны получить простенькое окно, с которым мы будем работать дальше.
Теперь напишем для класса Paint метод setUI, в котором будет задаваться расположение всех кнопок, меток и самого поля для рисования. У нас будет два ряда кнопок, первый ряд с кнопками устанавливающими цвет, второй ряд устанавливает размер кисти для рисования. Под ними будет идти поле для рисования.
Это достаточно объемный метод, однако многие строки повторяются, так что наберитесь терпения:
Не забудьте добавить вызов этого метода в __init__, чтобы все работало.
Если вы сделали все верно, то при запуске всего кода вы увидите следующее окно:
Теперь создадим метод рисования на холсте. Для начала создадим переменные класса устанавливающие размер и цвет кисти, в метод __init__ допишите:
Сам метод рисования будет выглядеть следующим образом:
Осталось только привязать к канвасу обработку только что созданного метода. Добавьте следую строку после прикрепления канваса (self.canvas.grid. )
означает «при движении зажатой левой кнопки мыши» вызывать метод draw. Теперь мы можем рисовать!
Уже выглядит неплохо. Добавим возможность изменять цвет кисти, заставим кнопки верхнего ряда работать. Для этого сначала создадим метод изменения цвета кисти:
После этого в каждой кнопке верхнего ряда следует добавить код обработки нажатия этой кнопки по следующему шаблону:
Теперь добавим метод изменения размера кисти:
И модернизируем код каждой кнопки нижнего ряда по следующему шаблону:
Логика работы этих кнопок та же, что и у кнопок изменения цвета кисти. Получаем следующий результат:
На этом практически все, осталось добавить функционал очистки холста. Мы оставили место в верхнем ряду кнопок, его и заполним. Добавьте следующий код в наш метод setUI:
Для очистки холста мы используем метод delete класса Canvas, чтобы удалить все с холста в качестве аргумента методу delete мы передаем «all». Вот и все, у нас есть примитивный Paint.
Python | Создание простого приложения для рисования в kivy
Kivy — это независимый от платформы инструмент GUI в Python. Так как он может быть запущен на Android, IOS, Linux, Windows и т. Д. Он в основном используется для разработки приложения Android, но это не означает, что его нельзя использовать в приложениях для настольных ПК.
Приложение для рисования:
В этом мы собираемся создать простое приложение для рисования с помощью KIVY. Сначала мы просто создаем холст и кисть, чтобы при перемещении курсора вы могли чувствовать себя как приложение для рисования.
При этом виджеты добавляются динамически. Если виджеты нужно добавлять динамически, во время выполнения, в зависимости от взаимодействия с пользователем, они могут быть добавлены только в файл Python.
Мы используем виджеты, макет, случайные, чтобы сделать это хорошо.
Реализация Кодекса:
# Программа для объяснения как создать приложение для рисования в киве
# импорт кивый модуль
# Базовый класс вашего приложения наследуется от класса приложения.
# app: всегда ссылается на экземпляр вашего приложения
from kivy.app import App
# это ограничивает kivy версию т.е.
# ниже этой версии вы не можете
# использовать приложение или программное обеспечение
# Виджеты являются элементами
# графический интерфейс пользователя, который
# является частью пользовательского опыта.
from kivy.uix.widget import Widget
# Этот макет позволяет вам установить относительные координаты для детей.
from kivy.uix.relativelayout import RelativeLayout
# Создаем класс Widget
# Создать класс макета
# где вы определяете работу
# Paint_brush () class
# При нажатии мыши, как ведет себя Paint_brush
# При движении мыши, как ведет себя Paint_brush
# Создать класс приложения
# для назначения произвольного цвета кисти
#: импорт случайного
rgb: rnd.random(), rnd.random(), rnd.random()
Выход:
Как сделать рисовалку на python
Внутренний функционал питона довольно мощный, и его вполне достаточно для реализации многих проектов. Однако питон не был бы таким популярным среди программистов, если бы не мог расширять свой функционал за счет дополнительных модулей (ещё их называют библиотеками или пакетами) с помощью всего лишь одной строчки кода.
drawzero — это простая и удобная графическая библиотека, в которой есть функции для рисования простых фигур. Чтобы получить к ним доступ, надо в начале программы написать строку
Установка drawzero
Перед первым использованием модуль drawzero нужно установить. Для этого в терминале нужно выполнить команду
Если слово «терминал» непонятно, то можно запустить вот такую программу:
Если в результате её запуска вывод будет примерно такой как ниже, то у вас успех!
A. Основы основ
Итак, приступим к рисованию!
Скопируйте и запустите программу ниже. В результате запуска должно открыться окно с нарисованной по диагонали красной линией. Сдавать код этой задачи не нужно 🙂
Осваиваем геометрию с помощью кода
Система координат в программировании и система координат в математике немного отличаются. В программировании точка с координатами (0, 0) находится в верхнем левом углу. Ось x направлена от неё вправо, а ось y — вниз.
Новость: строчки кода, начинающиеся с символа «#» называются в Python комментариями. Эти строчки предназначены для пояснения частей кода, чтобы в нём было проще разобраться. Особенно когда этот код читает не тот, кто его писал. Всё, что написано в такой строке, не считается программой и не выполняется.
Закомментировать сразу несколько строк кода можно, предварительно выделив эти строки, нажать Ctrl-/ (нажав и удерживая клавишу Ctrl, нажать клавишу / ). Повторное нажатие той же комбинации клавиш убирает комментарии в блоке кода, если он был перед этим закомментирован.
B. Три линии
Нарисуйте три линии так, чтобы получился треугольник (любой).
C. Три окружности
Теперь нарисуйте три окружности. Все три центра должны быть разными точками, а окружности вложены друг в друга и не пересекаться. То есть вторая окружность должна быть строго внутри первой, а третья — внутри второй.
D. Два прямоугольника
Нарисуйте прямоугольник внутри другого прямоугольника так, чтобы между ними получилась ровная «рамка».
Создание более сложных фигур
Рисуя треугольник линиями, можно заметить, что каждую точку мы выписывали дважды, потому что она была концом двух отрезков. Может быть можно сделать то же самое экономнее?
Если в многоугольнике больше трёх вершин, нужно учесть, что перечислять вершины в произвольном порядке нельзя. Представьте, что вы обходите эту фигуру по часовой стрелке или против часовой стрелки. В функции polygon надо перечислять вершины одним из этих способов, начиная с любой вершины. Если порядок вершин неверный, то может получиться, например, что-то такое:
E. Три треугольника
Нарисуйте три треугольника так, чтобы два из них не пересекались и находились внутри третьего.
F. Фоторамка
Использование переменных
Попробуем нарисовать какую-нибудь простенькую фигуру, например прямоугольник с закруглёнными концами.
Координаты центра окружности это середины левой и правой (вертикальных) сторон прямоугольника и их можно посчитать. Это и правда несложно. Но что, если эту картинку надо перерисовать в другом месте или, скажем, сделать исходный прямоугольник чуть выше или шире? Это по-прежнему будет несложно сделать, но придётся пересчитывать координаты центров окружностей. А если картинка такая?
Всего-то — сделали полоски чуть шире. Пришлось пересчитать почти все координаты. Теперь представим себе, что это всё надо будет пересчитать несколько раз.
Напишем ту же программу по шагам, но для вычисления координат станем использовать переменные. Что нам нужно знать об этой фигуре, для того, чтобы её нарисовать? Нам надо знать где она находится и её главные размеры.
Место можно задать по-разному. Мы запомним координаты левого верхнего угла. Размеры фигуры определяются размерами прямоугольника. А радиус круга это половина его высоты, поэтому размеров прямоугольника достаточно. Не поленимся ввести для радиуса отдельную переменную, код так будет лучше читаться.
Итак, всё готово для рисования. Теперь пишем те же самые вызовы функций рисования прямоугольников и кругов, но для вычисления всех координат используем только переменные. Надо только придумать — как вычислить координаты вертикального прямоугольника, используя имеющиеся переменные?
Очень полезно нарисовать картинку на бумаге и разобраться, откуда берутся формулы в программе, представленной ниже.
В нашей программе стало в 2 раза больше строк, зато перерисовать эту фигуру в другом месте или поменять её размер стало проще простого. Надо только изменить нужные переменные. И всё! Все координаты и размеры пересчитаются автоматически.
G. Два пластыря
Используйте для перемещения переменные, объявленные в коде. Пропорции должны быть сохранены (меньшая сторона в 5 раз меньше большей).
H. Скруглим углы
Давайте теперь сделаем не такие острые углы. Нарисуйте такую картинку:
Только «скруглить» угол можно по-разному. В идеальной фоторамке ширина должна быть одинаковой и в углах тоже. Но как понять, что такое «ширина рамки в углу»?
Давайте так: ширина это расстояние от точки на внешней границы к ближайшей к ней точке на внутренней. Изучите картинку со схемой и вы поймёте, что надо нарисовать (и в какой последовательности).
А ещё хорошо бы сделать всё на белом фоне! Для того, чтобы залить весь экран одним цветом, используйте команду `fill`. Например, заливка красным выглядит так:
I. Мишень
Хм, простая картинка — колечки одинаковой ширины. Ясно, что рисовать чёрные ‘black’ и белые ‘white’ круги, но в какой последовательности? Справитесь?
Тут, кстати, и циклы могут пригодиться 🙂
J. Забор
Работа с цветами
Пора научиться создавать свои цвета. Каждый цвет состоит из трёх компонентов: красного, зелёного и синего. Наверняка вам встречалась аббревиатура RGB (сокращение от Red, Green и Blue).
Представьте, что в абсолютно тёмной комнате вы светите на стену тремя фонариками: красным, зелёным и синим. У каждого есть регулировка интенсивности — число от 0 (фонарик выключен) до 255 (фонарик светит максимально ярко). Все фонарики светят в одну и ту же точку стены и в зависимости от настроек интенсивности всех трёх фонариков на стене получается пятно определённого цвета. Вот несколько примеров:
Цвета, приведённые в примере выше можно было сохранить так:
Нарисуем картинку из предыдущего параграфа, определив свои цвета:
K. В правильном порядке
Нарисуйте закрашенные треугольник, прямоугольник и круг, так, чтобы они «накладывались» в таком порядке, как изображено на рисунке.
L. Даже так можно?
Нарисуйте такую фигуру:
Немного знаков дорожного движения
M. Движение запрещено
N. Въезд запрещён
O. Одностороннее движение
P. Тупик
Знак имеет что-то общее с предыдущим и, немного поменяв параметры, можно почти половину взять оттуда. Используйте следующие цвета:
Q. Первая медицинская помощь
Используйте следующие цвета:
R. Главная дорога
То, как выглядит этот знак, найдите в поисковике. Скруглять углы и рисовать чёрные окантовки не нужно. Только белое и жёлтое.
S. Светофор
При рисовании красной треугольной рамки могут возникнуть сложности, если захочется сделать всё точно. Можно сделать и «на глаз».
Как сделать на python paint
В данной статье мы напишем простенькую рисовалку на Python. На этом примере мы потренируемся в создании GUI, использовании макетов компоновки в tkinter, передаче дополнительных аргументов в функцию-обработчик нажатия кнопки и использовании lambda-функции в Python.
Для этого примера удобнее будет использовать классовый подход к созданию GUI. Для начала определим класс Paint:
Запустив этот код вы должны получить простенькое окно, с которым мы будем работать дальше.
Теперь напишем для класса Paint метод setUI, в котором будет задаваться расположение всех кнопок, меток и самого поля для рисования. У нас будет два ряда кнопок, первый ряд с кнопками устанавливающими цвет, второй ряд устанавливает размер кисти для рисования. Под ними будет идти поле для рисования.
Это достаточно объемный метод, однако многие строки повторяются, так что наберитесь терпения:
Не забудьте добавить вызов этого метода в __init__, чтобы все работало.
Если вы сделали все верно, то при запуске всего кода вы увидите следующее окно:
Теперь создадим метод рисования на холсте. Для начала создадим переменные класса устанавливающие размер и цвет кисти, в метод __init__ допишите:
Сам метод рисования будет выглядеть следующим образом:
Рисование осуществляется путем создания кругов на холсте: пользователь зажимает левую кнопку мыши и при движении мышью, по пути следования курсора будут отрисовываться круги. Метод draw принимает аргумент event, на основе которого мы будем формировать овалы. Метод create_oval класса Canvas получает четыре координаты, на основе которых создается квадрат, в который вписывается круг. В качестве этих координат мы передаем позицию курсора, поэтому первая координата по оси икс будет позиция курсора минус размер кисти, вторая координата по оси икс — позиция курсора плюс размер кисти, то же самое для оси игрек. Это может показаться сложным, но скоро вы запустите наше приложение и увидите все своими глазами.
Осталось только привязать к канвасу обработку только что созданного метода. Добавьте следую строку после прикрепления канваса (self.canvas.grid. )
означает «при движении зажатой левой кнопки мыши» вызывать метод draw. Теперь мы можем рисовать!
Уже выглядит неплохо. Добавим возможность изменять цвет кисти, заставим кнопки верхнего ряда работать. Для этого сначала создадим метод изменения цвета кисти:
После этого в каждой кнопке верхнего ряда следует добавить код обработки нажатия этой кнопки по следующему шаблону:
Код который мы добавили — command = lambda: self.set_color(«red»), привязывает функцию с нужным нам аргументом к кнопке. Мы используем lambda-функцию потому-что, без lambda функция вызовется сразу при создании кнопки, а не только при ее нажатии. (Можете попробовать такую строку command = self.set_color(«red») и цвет сразу установится на красный). Добавив этот код с нужными аргументами (а это «green», «blue», «black», «white») ко всем кнопкам получим возможность изменять цвет кисти:
Теперь добавим метод изменения размера кисти:
И модернизируем код каждой кнопки нижнего ряда по следующему шаблону:
Логика работы этих кнопок та же, что и у кнопок изменения цвета кисти. Получаем следующий результат:
На этом практически все, осталось добавить функционал очистки холста. Мы оставили место в верхнем ряду кнопок, его и заполним. Добавьте следующий код в наш метод setUI:
Для очистки холста мы используем метод delete класса Canvas, чтобы удалить все с холста в качестве аргумента методу delete мы передаем «all». Вот и все, у нас есть примитивный Paint.
PyQt5 – Create Paint Application
There are so many options provided by Python to develop GUI application and PyQt5 is one of them. PyQt5 is cross-platform GUI toolkit, a set of python bindings for Qt v5. One can develop an interactive desktop application with so much ease because of the tools and simplicity provided by this library.
In this article we will see how we can create a Paint application using PyQt5. Our Paint application will consist of following
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning — Basic Level Course
Steps for designing the widgets –
1. Create a window sets its geometry and title
2. Create menu bar
3. Inside menu bar add different menus, that are file menu, size menu and color menu
4. Add save and clear action to the file menu
5. Add different brush sizes action to the brush size menu
6. Add different brush color action to the brush color menu
7. Create a white canvas and add it to the window
Back-end steps :
1. Create different variable : Drawing flag to check if currently drawing or not and set it to False, brush size variable to set current brush size, brush color to set current brush color and current position variable to know position of cursor
2. Add action to the clear and save widget
3. Inside clear action fill the canvas with white color
4. Inside the save action save the canvas
5. Add actions(methods) to various brush sizes and color to set size and color
6. Create paint event to draw white canvas on the screen
7. Create method to know when mouse left button is pressed inside that method make drawing flag true and change the current position
8. Create method for mouse movement, inside this method check if drawing flag is true and button is still pressed then draw using painter object and change the position according.
9. Create a method to know mouse button is released inside this method make drawing flag to false.
Пишем графическую программу на Python с tkinter
В работе со студентами и учениками я заметила, что при изучении какого-либо языка программирования большой интерес вызывает работа с графикой. Даже те студенты, которые скучали на заданиях про числа Фибоначчи, и уже казалось бы у них пропадал интерес к изучению языка, активизировались на темах, связанных с графикой.
Поэтому предлагаю потренироваться в написании небольшой графической програмки на Python с использованием tkinter (кроссплатформенная библиотека для разработки графического интерфейса на языке Python).
Код в этой статье написан для Python 3.5.
Задание: написание программы для рисования на холсте произвольного размера кругов разных цветов.
Не сложно, возможно программа «детская», но я думаю, для яркой иллюстрации того, что может tkinter самое оно.
Хочу рассказать сначала о том, как указать цвет. Конечно удобным для компьютера способом. Для этого в tkinter есть специальный инструмент, который можно запустить таким образом:
Примечание: как сказано в коментариях ниже — звёздочка не все импортирует, надёжнее будет написать
from tkinter import colorchooser
Можно для определения цвета рисования использовать английские название цветов. Здесь хочу заметить, что не все они поддерживаются. Тут говорится, что без проблем вы можете использовать цвета «white», «black», «red», «green», «blue», «cyan», «yellow», «magenta». Но я все таки поэкспериментировала, и вы увидите дальше, что из этого вышло.
Для того, чтобы рисовать в Python необходимо создать холст. Для рисования используется система координат х и у, где точка (0, 0) находится в верхнем левом углу.