0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Позиционирование элементов в Python. Python grid</a></li>
1
<ul><li><a>Позиционирование элементов в Python. Python grid</a></li>
2
<li><a>Canvas: рисуем линии в Python</a></li>
2
<li><a>Canvas: рисуем линии в Python</a></li>
3
<li><a>Canvas: рисуем цветные прямоугольники в Python</a></li>
3
<li><a>Canvas: рисуем цветные прямоугольники в Python</a></li>
4
<li><a>Рисуем сложные формы</a></li>
4
<li><a>Рисуем сложные формы</a></li>
5
<li><a>Другие GUI-библиотеки для Python</a><ul><li><a>Drawing with Turtle</a></li>
5
<li><a>Другие GUI-библиотеки для Python</a><ul><li><a>Drawing with Turtle</a></li>
6
<li><a>Drawing with Pygame</a></li>
6
<li><a>Drawing with Pygame</a></li>
7
</ul></li>
7
</ul></li>
8
</ul><p>В статье рассматривается создание графических интерфейсов с помощью библиотеки<strong>Tkinter</strong>. Отдельное внимание уделяется виджету<strong>Canvas</strong>, предназначенному для рисования (draw) в<strong>Python</strong>.</p>
8
</ul><p>В статье рассматривается создание графических интерфейсов с помощью библиотеки<strong>Tkinter</strong>. Отдельное внимание уделяется виджету<strong>Canvas</strong>, предназначенному для рисования (draw) в<strong>Python</strong>.</p>
9
<p>Tkinter представляет собой графическую кроссплатформенную библиотеку на основе средств Tk. Это свободное ПО, которое включено в стандартную библиотеку языка программирования Python.</p>
9
<p>Tkinter представляет собой графическую кроссплатформенную библиотеку на основе средств Tk. Это свободное ПО, которое включено в стандартную библиотеку языка программирования Python.</p>
10
<p>В состав Tkinter входит много компонентов. Один из них -<strong>Canvas</strong>, он же "Холст". Canvas применяется в Python для вывода следующих графических примитивов:</p>
10
<p>В состав Tkinter входит много компонентов. Один из них -<strong>Canvas</strong>, он же "Холст". Canvas применяется в Python для вывода следующих графических примитивов:</p>
11
<ul><li>линий,</li>
11
<ul><li>линий,</li>
12
<li>прямоугольников,</li>
12
<li>прямоугольников,</li>
13
<li>эллипсов,</li>
13
<li>эллипсов,</li>
14
<li>текста,</li>
14
<li>текста,</li>
15
<li>окон,</li>
15
<li>окон,</li>
16
<li>изображений.</li>
16
<li>изображений.</li>
17
</ul><p>Но прежде чем продолжить, следует вкратце рассказать о существующих методах позиционирования элементов.</p>
17
</ul><p>Но прежде чем продолжить, следует вкратце рассказать о существующих методах позиционирования элементов.</p>
18
<p>Для позиционирования элементов, во время работы с Tkinter используют разные методы:</p>
18
<p>Для позиционирования элементов, во время работы с Tkinter используют разные методы:</p>
19
<ul><li>pack();</li>
19
<ul><li>pack();</li>
20
<li>place();</li>
20
<li>place();</li>
21
<li>grid.</li>
21
<li>grid.</li>
22
</ul><p>Метод grid позволяет поместить элемент в конкретную ячейку условной сетки либо грида. Используется ряд параметров:</p>
22
</ul><p>Метод grid позволяет поместить элемент в конкретную ячейку условной сетки либо грида. Используется ряд параметров:</p>
23
<ul><li><strong>column</strong>- это номер столбца, отсчитывается с нуля;</li>
23
<ul><li><strong>column</strong>- это номер столбца, отсчитывается с нуля;</li>
24
<li><strong>row</strong>- это номер строки, отсчитывается с нуля;</li>
24
<li><strong>row</strong>- это номер строки, отсчитывается с нуля;</li>
25
<li><strong>columnspan</strong>- указывает число столбцов, занимаемых элементом;</li>
25
<li><strong>columnspan</strong>- указывает число столбцов, занимаемых элементом;</li>
26
<li><strong>rowspan</strong>- указывает число строк;</li>
26
<li><strong>rowspan</strong>- указывает число строк;</li>
27
<li><strong>ipadx</strong>и<strong>ipady</strong>- подразумеваются отступы по горизонтали и вертикали от границ компонента до текста компонента;</li>
27
<li><strong>ipadx</strong>и<strong>ipady</strong>- подразумеваются отступы по горизонтали и вертикали от границ компонента до текста компонента;</li>
28
<li><strong>padx</strong>и<strong>pady</strong>- аналогичные отступы, но от границ ячейки грида до границ компонента;</li>
28
<li><strong>padx</strong>и<strong>pady</strong>- аналогичные отступы, но от границ ячейки грида до границ компонента;</li>
29
<li><strong>sticky</strong>- определяет выравнивание элемента в ячейке в случае, когда ячейка больше компонента.</li>
29
<li><strong>sticky</strong>- определяет выравнивание элемента в ячейке в случае, когда ячейка больше компонента.</li>
30
</ul><p>Для начала работы с<strong>Tkinter</strong>библиотеку сначала надо импортировать:</p>
30
</ul><p>Для начала работы с<strong>Tkinter</strong>библиотеку сначала надо импортировать:</p>
31
<p>from tkinter import *</p>
31
<p>from tkinter import *</p>
32
<p>Ниже определен грид из девяти кнопок:</p>
32
<p>Ниже определен грид из девяти кнопок:</p>
33
<h2><strong>Canvas</strong><strong>: рисуем линии в</strong><strong>Python</strong><strong></strong></h2>
33
<h2><strong>Canvas</strong><strong>: рисуем линии в</strong><strong>Python</strong><strong></strong></h2>
34
<p>Виджет<strong>Canvas</strong>предоставляет функциональность, с помощью которой разработчик может нарисовать (drawn) графику в Tkinter. Для чего может понадобиться эта графика? К примеру, для получения статистики, создания своих виджетов, отрисовки небольших игр.</p>
34
<p>Виджет<strong>Canvas</strong>предоставляет функциональность, с помощью которой разработчик может нарисовать (drawn) графику в Tkinter. Для чего может понадобиться эта графика? К примеру, для получения статистики, создания своих виджетов, отрисовки небольших игр.</p>
35
<p><strong>Начинать освоение Canvas лучше всего с линий</strong>- примитивных геометрических элементов. В Canvas линию с нужным размером можно создать через метод create_line(). Метод mainloop используется для вызова окна виджета.</p>
35
<p><strong>Начинать освоение Canvas лучше всего с линий</strong>- примитивных геометрических элементов. В Canvas линию с нужным размером можно создать через метод create_line(). Метод mainloop используется для вызова окна виджета.</p>
36
<p>У create_line() есть параметры - это координаты x и y. Именно они обозначают начальные и конечные точки будущего линейного отрезка. Вот как этот метод рисует (draws) обычную вертикальную линию:</p>
36
<p>У create_line() есть параметры - это координаты x и y. Именно они обозначают начальные и конечные точки будущего линейного отрезка. Вот как этот метод рисует (draws) обычную вертикальную линию:</p>
37
<p>Можно создавать и пунктирную линию - для этого существует опция dash. У этой опции есть собственные значения, помещенные в скобки. В примере это (4, 2).</p>
37
<p>Можно создавать и пунктирную линию - для этого существует опция dash. У этой опции есть собственные значения, помещенные в скобки. В примере это (4, 2).</p>
38
<p>Что это значит:</p>
38
<p>Что это значит:</p>
39
<ul><li>цифра 4 обозначает длину тире (точки) в пикселях;</li>
39
<ul><li>цифра 4 обозначает длину тире (точки) в пикселях;</li>
40
<li>цифра 2 отвечает за ширину (width) пустого промежутка, существующего между тире (точками).</li>
40
<li>цифра 2 отвечает за ширину (width) пустого промежутка, существующего между тире (точками).</li>
41
</ul><p>Если прописать dash=(1, 1), на выходе получится линия из точек.</p>
41
</ul><p>Если прописать dash=(1, 1), на выходе получится линия из точек.</p>
42
<p>Когда рисуешь обычную линию, можно указать в качестве координат несколько конечных точек. Кусочек кода ниже отвечает за отрисовку<strong>треугольника</strong>- он ведь тоже состоит из простых линий.</p>
42
<p>Когда рисуешь обычную линию, можно указать в качестве координат несколько конечных точек. Кусочек кода ниже отвечает за отрисовку<strong>треугольника</strong>- он ведь тоже состоит из простых линий.</p>
43
<p>В результате весь код отработает следующим образом:</p>
43
<p>В результате весь код отработает следующим образом:</p>
44
<h2>Canvas: рисуем цветные прямоугольники в Python</h2>
44
<h2>Canvas: рисуем цветные прямоугольники в Python</h2>
45
<p>Цвет - это объект, отображающий комбинацию трех цветов (красного, зеленого, синего -<strong>RGB</strong>). С помощью кода ниже были нарисованы прямоугольники. Также они были закрашены различными цветами.</p>
45
<p>Цвет - это объект, отображающий комбинацию трех цветов (красного, зеленого, синего -<strong>RGB</strong>). С помощью кода ниже были нарисованы прямоугольники. Также они были закрашены различными цветами.</p>
46
<p>Так создается виджет<strong>Canvas</strong>:</p>
46
<p>Так создается виджет<strong>Canvas</strong>:</p>
47
<p>Далее создается прямоугольник, для чего используется create_rectangle(). Здесь надо прописать 4 параметра:</p>
47
<p>Далее создается прямоугольник, для чего используется create_rectangle(). Здесь надо прописать 4 параметра:</p>
48
<p>- x;</p>
48
<p>- x;</p>
49
<p>- y;</p>
49
<p>- y;</p>
50
<p>- координатное положение верхней левой ограничительной точки (левого верхнего угла);</p>
50
<p>- координатное положение верхней левой ограничительной точки (левого верхнего угла);</p>
51
<p>- координатное положение нижней правой ограничительной точки (нижнего правого угла).</p>
51
<p>- координатное положение нижней правой ограничительной точки (нижнего правого угла).</p>
52
<p>Если есть необходимость, то посредством параметра outline у прямоугольника задается цвет контура. Окрасить всю внутреннюю область можно с помощью параметра fill:</p>
52
<p>Если есть необходимость, то посредством параметра outline у прямоугольника задается цвет контура. Окрасить всю внутреннюю область можно с помощью параметра fill:</p>
53
<p>А вот и итоговый результат:</p>
53
<p>А вот и итоговый результат:</p>
54
<h2>Рисуем сложные формы</h2>
54
<h2>Рисуем сложные формы</h2>
55
<p>Можно без проблем нарисовать<strong>круг, овал</strong>и прочие фигуры, включая<strong>криволинейные</strong>. Именно для этой цели и предназначен код ниже:</p>
55
<p>Можно без проблем нарисовать<strong>круг, овал</strong>и прочие фигуры, включая<strong>криволинейные</strong>. Именно для этой цели и предназначен код ниже:</p>
56
<p>Благодаря этому коду будут созданы такие геометрические фигуры, как<strong>круг, прямоугольник, овал, дуга, многоугольник</strong>. Также следует обратить внимание на контур - он окрасится в красный цвет, а заливка будет зеленой. Ширина контура (width) - 2 px.</p>
56
<p>Благодаря этому коду будут созданы такие геометрические фигуры, как<strong>круг, прямоугольник, овал, дуга, многоугольник</strong>. Также следует обратить внимание на контур - он окрасится в красный цвет, а заливка будет зеленой. Ширина контура (width) - 2 px.</p>
57
<p>Сначала создается<strong>круг</strong>. Для его получения в Python задействуется метод create_oval(). Первые 4 параметра в нем нужны для указания ограничивающих координат. Здесь x и y являются координатами правой нижней и верхней левой точек квадрата, где помещен круг:</p>
57
<p>Сначала создается<strong>круг</strong>. Для его получения в Python задействуется метод create_oval(). Первые 4 параметра в нем нужны для указания ограничивающих координат. Здесь x и y являются координатами правой нижней и верхней левой точек квадрата, где помещен круг:</p>
58
<p>Аналогично создается и<strong>овал</strong>- меняются лишь первые 4 параметра.</p>
58
<p>Аналогично создается и<strong>овал</strong>- меняются лишь первые 4 параметра.</p>
59
<p>Следующий этап -<strong>прямоугольник</strong>. Нарисованный restangle тоже имеет координатные значения x и y, играющие роль ограничительных точек.</p>
59
<p>Следующий этап -<strong>прямоугольник</strong>. Нарисованный restangle тоже имеет координатные значения x и y, играющие роль ограничительных точек.</p>
60
<p>Далее создается<strong>дуга</strong>. Так как она - это часть круга, то надо указать ограничительные координаты дуги. Ее угол устанавливается посредством параметра start, а размер угла - с помощью параметра extent:</p>
60
<p>Далее создается<strong>дуга</strong>. Так как она - это часть круга, то надо указать ограничительные координаты дуги. Ее угол устанавливается посредством параметра start, а размер угла - с помощью параметра extent:</p>
61
<p>Последнее - это<strong>многоугольник</strong>. Так как присутствует много углов, надо задействовать специальный метод create_polygon(), позволяющий задать нужное число координатных значений:</p>
61
<p>Последнее - это<strong>многоугольник</strong>. Так как присутствует много углов, надо задействовать специальный метод create_polygon(), позволяющий задать нужное число координатных значений:</p>
62
<p>Остается посмотреть результат:</p>
62
<p>Остается посмотреть результат:</p>
63
<p>Также с помощью Canvas можно без проблем вставлять изображения и рисовать текст (text), используя шрифты разной высоты (height) и стиля (style).</p>
63
<p>Также с помощью Canvas можно без проблем вставлять изображения и рисовать текст (text), используя шрифты разной высоты (height) и стиля (style).</p>
64
<h2>Другие GUI-библиотеки для Python</h2>
64
<h2>Другие GUI-библиотеки для Python</h2>
65
<p>Кроме библиотеки Tkinter и виджета Canvas, существует и масса других графических библиотек, применяемых для создания рисунков (drawings). Среди них:</p>
65
<p>Кроме библиотеки Tkinter и виджета Canvas, существует и масса других графических библиотек, применяемых для создания рисунков (drawings). Среди них:</p>
66
<ul><li>Flexx,</li>
66
<ul><li>Flexx,</li>
67
<li>wxPython,</li>
67
<li>wxPython,</li>
68
<li>PyQt5,</li>
68
<li>PyQt5,</li>
69
<li>PyGUI,</li>
69
<li>PyGUI,</li>
70
<li>PyGTK и многие другие.</li>
70
<li>PyGTK и многие другие.</li>
71
</ul><p>При рисовании обычно применяется каскадный способ: компоненты добавляются поверх друг друга.</p>
71
</ul><p>При рисовании обычно применяется каскадный способ: компоненты добавляются поверх друг друга.</p>
72
<h3><strong>Drawing with Turtle</strong></h3>
72
<h3><strong>Drawing with Turtle</strong></h3>
73
<p>Отдельного упоминания заслуживает модуль<strong>Turtle</strong>(по аналогии с черепашками Turtles). Этот модуль позволяет создавать на Питоне рисунки и другие графические объекты, включая игры в специальном окне. Для того чтобы приступить к рисованию (drawing), надо сначала присоединить его (импортировать). Делается это одним из 3-х способов:</p>
73
<p>Отдельного упоминания заслуживает модуль<strong>Turtle</strong>(по аналогии с черепашками Turtles). Этот модуль позволяет создавать на Питоне рисунки и другие графические объекты, включая игры в специальном окне. Для того чтобы приступить к рисованию (drawing), надо сначала присоединить его (импортировать). Делается это одним из 3-х способов:</p>
74
<p>1) import turtle;</p>
74
<p>1) import turtle;</p>
75
<p>2) from turtle import open as t;</p>
75
<p>2) from turtle import open as t;</p>
76
<p>3) from turtle import*.</p>
76
<p>3) from turtle import*.</p>
77
<h3><strong>Drawing</strong><strong>with</strong><strong>Pygame</strong></h3>
77
<h3><strong>Drawing</strong><strong>with</strong><strong>Pygame</strong></h3>
78
<p><strong>Pygame</strong>- набор модулей, используемый в тех случаях, когда нужно нарисовать 2D-игру. Также Pygame нередко называют библиотекой/фреймворком. С его помощью создают как компьютерные игры, так и мультимедийные приложения.</p>
78
<p><strong>Pygame</strong>- набор модулей, используемый в тех случаях, когда нужно нарисовать 2D-игру. Также Pygame нередко называют библиотекой/фреймворком. С его помощью создают как компьютерные игры, так и мультимедийные приложения.</p>
79
<p>Pygame сравнивают с Tkinter, который с помощью своих функций и классов предоставляет языку программирования Python доступ к графической библиотеке Tk.</p>
79
<p>Pygame сравнивают с Tkinter, который с помощью своих функций и классов предоставляет языку программирования Python доступ к графической библиотеке Tk.</p>
80
<p>Если нужны дополнительные детали по теме, смотрите источники ниже:</p>
80
<p>Если нужны дополнительные детали по теме, смотрите источники ниже:</p>
81
<ul><li>https://metanit.com/python/tutorial/9.4.php;</li>
81
<ul><li>https://metanit.com/python/tutorial/9.4.php;</li>
82
<li>https://python-scripts.com/tkinter-introduction;</li>
82
<li>https://python-scripts.com/tkinter-introduction;</li>
83
<li>https://techrocks.ru/2018/04/26/13-python-gui-frameworks/;</li>
83
<li>https://techrocks.ru/2018/04/26/13-python-gui-frameworks/;</li>
84
<li>http://www.239.ru/sites/default/files/userdata/urok_4._cherepashya_grafika_v_python.pdf;</li>
84
<li>http://www.239.ru/sites/default/files/userdata/urok_4._cherepashya_grafika_v_python.pdf;</li>
85
<li>https://docs.python.org/3/library/turtle.html;</li>
85
<li>https://docs.python.org/3/library/turtle.html;</li>
86
<li>https://python-scripts.com/tkinter-canvas-example.</li>
86
<li>https://python-scripts.com/tkinter-canvas-example.</li>
87
</ul>
87
</ul>