HTML Diff
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>