Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Команды управления «черепашкой»
Полный список команд управления «черепашкой» можно получить через help('turtle'). Вот некоторые из них: Up() – поднятие пера, чтоб не оставалось следа перемещения Down() – опускание пера, чтоб при перемещении оставался след Goto( x, y) – перемещение пера в точку с координатами (x,y) Color(‘строка цвета’) – изменение цвета пера Width( n) – установка толщины пера в точках экрана Forward(n) – перемещение пера вперёд на n точек Backward(n) – перемещение пера назад на n точек Right(k) – перемещение пера вправо на k точек Left(k) – перемещение пера влево на k точек Circle(r) – рисует окружность радиуса |r| Write(‘строка’) – печатает текст в текущем положении “пера” Clear() – очистка области рисования
#_*_ coding: utf8_*_ import turtle # turtle.reset() turtle.tracer(0) turtle. width(2) #ширина пера # лицо turtle. up() #поднятие пера x=0 y=100 turtle. goto( x, y) # установка пера в точку (0,100) turtle. fill(1) # начало рисования закрашенной области turtle. color('# ffaa00') # установка оранжевого цвета turtle. down() # опускание пера turtle. circle(100) # изображение окружности turtle. fill(0) # завершение рисования закрашенной области turtle.color('black') turtle.circle(100) turtle.up() # глаза x=45 y=50 turtle.goto(x,y) turtle.down() turtle.color('#0000aa') turtle.fill(1) turtle.circle(7) turtle.up() turtle.fill(0) # x=-55 y=-50 turtle.goto(x,y) turtle.right(45 ) turtle.width(3) turtle.down() turtle.color('#aa0000') turtle.circle(80,90) turtle.up() # turtle.right(135) x=0 y=50 turtle.goto(x,y) turtle.width(2) turtle.color('black') turtle.down() turtle.forward(100) # turtle._root.mainloop() Пример рисунка
Рисование
turtle.color(color) – цвет курсора color ; turtle. penup() – Поднимаем курсор, что бы при перемещении курсора не происходило рисование линий; turtle. pendown() – Опускаем курсор, что бы при перемещении курсора происходило рисование линий; turtle. goto( x, y) – Перейти в точку с координатами x и y; turtle. circle( radius) – Нарисовать круг с радиусом = radius; turtle. right( degrees) – Повернуть курсор на право на degrees градусов; turtle. left( degrees) – Повернуть курсор на лево на degrees градусов; turtle. forward( length) – Нарисовать линий длиной = length; turtle. done() – завершение программы, использующий turtle.
import turtle #подключить модуль turtle Команды для перемещения курсора: forward(n) #вперед на n пикселей backward(n) #назад на n пикселей left(n) #влево на n градусов right(n) #вправо на n градусов circle(r) #начертить окружность радиуса r, с центром кслева от курсора, если r>0, справа, если r<0 circle(r,n) #начертить дугу радиуса r, градусной мерой n против часовой стрелки, если r>0, по часовой стрелке, если r<0 goto(x,y) #переместить курсор в точку с координатами (x,y) Команды рисования: down() #опустить курсор для рисования up() #поднять курсор width(n) #ширина следа курсора в n пикселей сolor(s) #где s #цвет рисования курсора пример: "red", "blue" begin_fill(),end_fill() #рисует закрашенные области (начало и конец рисунка) Дополнительно: reset() #очищается экран, возвращает курсор сlear() #очистить экран write(s) #вывести строку s в точке нахождения курсора radians() #мера измерения углов в радианы degrees() #мера измерения углов в градусах mainloop() #задержка окна tracer(f) #режим отладки Цвета, используемые в графике: Aqua, blue, fuchsia, green, maroon, orange, pink, purple, red, yellow, violet, indigo, chartreuse, lime, import turtle # Импортируем библиотеку turtle turtle.color("black") # Устанавливаем цвет черепашки turtle . penup () # Поднимаем курсор turtle . goto (-110, -25) # Переходим по нужным координатам turtle . pendown () # Опускаем курсор turtle . circle (45) # Рисуем круг с радиусом 45 turtle.color("black") turtle.penup() turtle.goto(0, 80) turtle.pendown() turtle.write("ТҮГӘРӘК") # В ывод надпис и " ТҮГӘРӘК"
turtle.begin_fill() turtle.penup() turtle.width(5) # ширина пера turtle.right(90) # Повернуть курсор на 90 гр. Вправо turtle.goto(40, 40) turtle.pendown() turtle.forward(70) # Пройти вперед расстояние 70 for i in range(35) : turtle.right(10) turtle.forward(70) turtle.done() import turtle turtle.begin_fill() turtle.penup() turtle.goto(0,0) turtle.pendown() turtle . forward (60) # Пройти вперед расстояние 70 turtle . right (120) # Повернуть курсор на 120 гр. в право turtle.forward(60) turtle.right(120) turtle.forward(60) turtle.end_fill() turtle.done() from turtle import *color('orange', 'red') width(3) begin_fill() while True: forward(250) left(144) if abs(pos()) < 1: break end_fill() done() Рисование дома. from turtle import * turtle.begin_fill() turtle.penup() turtle. goto(35, 35) turtle. right(90) # Поворот курсора на 90 градусов вправо turtle. pendown() turtle. forward(70) # Пройти вперед расстояние 70 turtle.right(90) turtle.forward(70) turtle.right(90) turtle.forward(70) turtle.right(90) turtle.forward(70) turtle.penup() turtle.goto(45, 35) turtle.right(225) turtle.pendown() turtle.forward(70) turtle.left(90) turtle. forward(70) turtle. left(135) # Повернуть курсор влево на 135 градусов turtle.forward(100) turtle.done() Изображение стэлса import turtle def left_forw(angl,f) : turtle .left(angl) turtle .forward(f) def right_forw(angl,r) : turtle .left(angl) turtle .forward(r) k =20 #масштаб q =-10 #угол w=100 #перенос рисунка #чёрная часть turtle . penup () turtle . goto (- w , w ) turtle .color('black') ##000000') turtle .left(q) turtle .pendown() turtle .begin_fill() turtle .forward(k*6) turtle .right_forw(45,k*8**(1/2)) turtle .left_forw(135,k*2) turtle .left_forw(180,k) turtle .left_forw(90,k*2) turtle .left_forw(90,k) turtle .left_forw(180,k*2) turtle .left_forw(135,k*8**(1/2)) turtle .right_forw(45,k*6) turtle .right_forw(150,k*20**(1/2)) turtle .left_forw(120,k*5**(1/2)) turtle .right_forw(150,k*3) turtle .end_fill() # жёлтая часть turtle .color('yellow') ##ffe300') turtle .begin_fill() turtle .left_forw(30,k*20**(1/2)) turtle .right_forw(60,k*20**(1/2)) turtle .left_forw(30,k*3) turtle .right_forw(150,k*5**(1/2)) turtle .left_forw(120,k*20**(1/2)) turtle .end_fill() turtle .done() Изображение человека
Упражнения : 1. Нарисуйте на экране равносторонний треугольник. 2. Нарисуйте на экране квадрат с диагоналями. 3. Нарисуйте две касающиеся окружности. 4. Нарисуйте две пересекающиеся окружности. 5. Нарисуйте дом. 6. Нарисуйте компьютер. Canvas графика Импорт модуля tkinter в Python происходит после команды from tkinter import *. Главное окно создает команда root = Tk() Интерактивные компоненты В окне кнопка может располагаться через класс Button модуля tkinter. Кнопка связывается с какой-нибудь переменной. У класса Button есть обязательный параметр – объект, которому кнопка принадлежит. b = Button( root) У кнопки много свойств: размер, цвет фона и надписи и др. Для надписи текста на кнопке используется свойство – text : b[" text"] = " Рисовать" Предположим, что задача кнопки ввести данные, используя функцию input при нажатии на нее левой кнопкой мыши. Действия (алгоритм), которые происходят при том или ином событии, могут быть достаточно сложным. Поэтому часто их оформляют в виде функции, а затем вызывают, когда они понадобятся. Пусть ввод с экрана оформляется в виде функции reader: def reader( event): input ( a) Событие нажатия левой кнопкой мыши выглядит так: для связи предназначен метод bind. Синтаксис связывания события с обработчиком выглядит так: b. bind("< Button-1>", reader) Кнопка отображается в окне используя метод pack. b. pack() Без этой строчки кнопка в окне не появится. Главное окно появится после вызова методом mainloop: root. mainloop() Код программы может выглядеть таким образом: from tkinter import * def reader(event): input (a) root = Tk() b = Button(root) b["text"] = " Ввод " b.bind("<Button-1>",reader) b.pack() root.mainloop() Объект-кнопка создается вызовом класса Button модуля tkinter. При этом обязательным аргументом является лишь родительский виджет (например, окно верхнего уровня). Другие свойства могут указываться при создании кнопки или задаваться позже. Синтаксис: переменная = Button (родит_виджет, *свойство=значение, … ….+) У кнопки много свойств, в примере ниже указаны лишь некоторые из них. from tkinter import * root = Tk() b = Button(root,text="Это кнопка", #надпись на кнопке #ширина и высота bg="white",fg="blue") #цвет фона и надписи b.pack() root.mainloop() bg и fg – это сокращения от background (фон) и foreground (передний план). Ширина и высота измеряются в знакоместах (количество символов). Метка (или надписи) – виджеты, содержащие строку текста и служащие для информирования пользователя. Lab = Label(root, text="Метка ! \n Из двух строк.", font="Arial 18") Класс Entry модуля tkinter позволяет ввести строку текста. Ent = Entry(root,# bd – ширина границы . Text предназначен для многострочного текстового поля. tex = Text(root,font="Verdana 12", wrap=WORD) Cвойство wrap в зависимости от своего значения позволяет переносить текст, вводимый пользователем либо по символам, либо по словам, либо вообще не переносить, пока пользователь не нажмет Enter. Радиокнопки (переключатели) используют группами, при этом в одной группе может быть «включена» лишь одна кнопка. v=IntVar() v.set(1) r0 = Radiobutton(root,text="1-ая",variable=v,value=0) r1 = Radiobutton(root,text="2-ая",variable=v,value=1) r2 = Radiobutton(root,text="3-я",variable=v,value=2) Одна группа определяет значение одной переменной, т.е. если в примере будет выбрана радиокнопка r2, то значение переменной будет v будет 2. Изначально также требуется установить значение переменной (выражение v.set(1) задает значение переменной v равное 1). Флажки. Объект checkbutton предназначен для выбора не взаимоисключающих пунктов в окне (можно активировать несколько флажков). Значение каждого флажка привязывается к своей переменной, значение которой определяется опциями onvalue (включено) и offvalue (выключено) в описании флажка. c1 = IntVar() c2 = IntVar() ch1 = Checkbutton(root,text="1-ый флажок",variable=c1,onvalue=1,offvalue=0) ch2 = Checkbutton(root,text="2-ой флажок",variable=c2,onvalue=2,offvalue=0) Меню – объект, находящийся под строкой заголовка и представляет собой выпадающие списки со словами; каждый такой список может содержать другой вложенный в него список. Каждый пункт списка представляет собой команду, запускающую какое-либо действие или открывающую диалоговое окно. Создание меню в Tkinter from tkinter import * root = Tk() m = Menu(root) # создается объект Меню на главном окне root.config(menu=m) # окно конфигурируется с указанием меню для него f = Menu(m) #создается пункт меню с размещением на основном меню (m) m.add_cascade(label="File",menu=f) #пункт располагается на меню (m) f.add_command(label="Open...") #формируется список команд пункта меню f. add_ command( label=" New") f.add_command(label="Save...") f.add_command(label="Exit") h = Menu(m) #2-ой пункт меню m.add_cascade(label="Help",menu=h) h.add_command(label="Help") h.add_command(label="About") root.mainloop() Метод add_cascade добавляет новый пункт в меню, который указывается как значение опции menu. Метод add_command добавляет новую команду в пункт меню. Одна из опций данного метода (в примере выше ее пока нет) – command – связывает данную команду с функцией-обработчиком. Можно создать вложенное меню. Для этого создается еще одно меню и с помощью add_cascade привязать к родительскому пункту. nf = Menu(fm) f.add_cascade(label="Import",menu=nf) nf.add_command(label="Image") nf.add_command(label="Text") Привязка функций к меню Каждая команда меню обычно должна быть связана со своей функцией, выполняющей те или иные действия (выражения). Связь происходит с помощью опции command метода add_command. Функция обработчик до этого должна быть определена. Для примера выше далее приводятся исправленные строки добавления команд ―About‖ ―New‖и ―Exit‖ а также функции, вызываемые, когда пользователь щелкает левой кнопкой мыши по соответствующим пунктам подменю. def new_win(): win = Toplevel(root) def close_win(): root.destroy() def about(): win = Toplevel(root) lab = Label(win,text="Это просто программа-тест \n меню в Tkinter") lab.pack() …. f.add_command(label="New",command=new_win) …. f.add_command(label="Exit",command=close_win) …. h.add_command(label="About",command=about) Формирование полей нтерактивного ввода обеспечивает следущий фрагмент программы. язу = Label ( text ="y = a * sin ( bx )+ c ") Графические примитивы Фу нкции :с anvas(root,\ cursor= "pencil") # определение холста canv.create_line(0,0,30,50,width=3,fill="blue", arrow=LAST) # линия canv.create_rectangle(x,y,x+8,y+5,fill="red", \ outline =" red ") # прямоугольник # outline – цвет границы canv.create_polygon([250,100],[200,150],[300,150], \ fill="red") # fill – цвет заливки canv.create_oval([20,200],[150,300],fill="gray50") # овалПример 1. Построение координатных осей. from math import *from tkinter import * root = Tk() canv = Canvas(root, width = 100, height = 100, \ bg = "lightblue", cursor = "pencil") canv.create_line(50,100,50,0,width=2,arrow=LAST) canv.create_line(0,50,100,50,width=2,arrow=LAST) canv.pack() root.mainloop() Пример 2. Построение осей координат. from math import * Пример 3. Построение синусоиды. from math import * *200),i, 250+int((c+a*sin(b*(i-320)/180*3.14)) *200), fill=f) Пример 4 . Построение случайных кругов from random import * from tkinter import * s = 400 root = Tk() С = Canvas(root, height=s) С .pack() while 1: c = choice(['aqua', 'blue', 'fuchsia', 'green', 'maroon', 'orange','pink','purple', \ 'red','yellow', 'violet', 'indigo', 'chartreuse', 'lime']) x = randint(0, s) y = randint(0, s) d = 10+randint(0, s/5) С .create_oval(x, y, x+d, y+d, fill=c) root.update() Пример 5 . Построение случайных кругов и прямоугольников с границей кнопкой управления from random import * # импорт методов модуля random from tkinter import * def change(): b1['text'] = "Үзгәртелгән - Изменено " b1['bg'] = '#000000' b1['activebackground'] = '#aaaaaa' b1['fg'] = '#ffffff' b1['activeforeground'] = '#ffffff' K=1-K s = 600 root = Tk() # создает окно canvas = Canvas(root, height=s) # создает холст размера s canvas.pack() # расположение холста в окне D = 0 K = 1 b1 = Button(text="Үзгәртү - Изменить ", height=3) b1.config(command=change) b1.pack() while True : #D < 3000: d = randint(10, s // 5) c = choice(['aqua','blue','green','orange','red','yellow', 'violet']) g = choice(['aqua','blue','green','orange','red','yellow', 'violet']) x = randint(-d, s) y = randint(-d, s-20) k = randint(0, 3) if K*k==0 : canvas.create_oval(x, y, x+d, y+d, fill=c, outline=g, width=3) elif k==1 : canvas.create_rectangle(x,y,x+d,y+d,fill=c,outline=g,width=3,activedash=(5,4)) root.update() D += 1 Пример 6 . Масштабирование рисунка from PIL import Image, ImageDraw image = Image.open("cat.jpg") draw = ImageDraw.Draw(image) # прорисовка рисунка width = image.size[0] # ширина рисунка height = image.size[1] # высота рисунка pix = image.load() image.show() # показ данного рисунка Smalled=image.resize((width//2, height//2), Image.ANTIALIAS) Smalled. show(); # показ уменьшенного вдвое рисунка Biged=image.resize((width*2, height*2), Image.ANTIALIAS) Biged. show(); # показ увеличенного вдвое рисунка cropImg=image.crop((100,0,360,400)) cropImg.show(); Пример 7 . Построение градиенты цветов. import tkinter as tk # from math import sqrt def average(hex1, hex2, percent): percent = 1 if percent > 1 else 0 if percent < 0 else percent rgb1 = [int(hex1[i:i + 2], 16) for i in range(1, 7, 2)] rgb2 = [int(hex2[i:i + 2], 16) for i in range(1, 7, 2)] f = '#' for i in range(3): temp = hex(int(rgb1[i] + (rgb2[i] - rgb1[i]) * percent))[2:] f += '0' + temp if len(temp) == 1 else temp return f res = 500 x1, y1, color1 = 100, 100, '#FF003A' x2, y2, color2 = 400, 280, '#D9FF3A' root = tk.Tk() canv = tk.Canvas(height=res, bg='grey10') for i in range(res + 2): canv.create_line(i, 0, i, res + 2, fill=average(color1, color2, i / res)) canv.pack() root.mainloop() Пример 8 . Тиражирование рисунка. from tkinter import * Задан файл «univer. jpg» с рисунком Программа выведет следующее изображение
Рассмотрим еще одну задачу Canvas (холст) — объект библиотеки tkinter, позволяющий располагать на себе другие объекты. Это могут быть геометрические фигуры, узоры, вставленные изображения и другие видео объектов (например, метки, кнопки, текстовые поля). И это еще не все. Отображенные на холсте объекты можно изменять и перемещать (при желании) в процессе выполнения скрипта. Учитывая все это, canvas находит широкое применение при создании GUI-приложений c использованием tkinter (создание рисунков, оформление других ВО, реализация функций графических редакторов, программируемая анимация и др.). Для создания объект-холст вызывается класс модуля tkinter и устанавливаются некоторые параметры. Например: from tkinter import *root = Tk() c=Canvas(root,width=600,height=600,bg="white",cursor="pencil") Далее с помощью любого менеджера геометрии разместить на главном окне. Нулевая точка (0,0) для объекта Canvas располагается в верхнем левом углу. Единицы измерения пиксели (точки экрана). Чтобы нарисовать линию на холсте применяется метод create_line. c.create_line( 8 0,80,1 8 0, 8 0, fill='green', # зеленая линия width =5, arrow = LAST , dash =(10,2), # пунктирная линия со стрелкой activefill='lightgreen', arrowshape="10 20 10")Четыре числа — это пары координат начала и конца линии, т.е в примере первая линия начинается из точки (200,50), а заканчивается в точке (300,50). Вторая линия начинается в точке (0,0), заканчивается — в (100,100). Свойство fill позволяет задать цвет линии отличный от черного, а arrow – установить стрелку (в конце, начале или по обоим концам линии). Так для изображения осей можно написать c.create_line(500,600,500,0,width=4,arrow=LAST) c.create_line(0,500,600,500,width=4,arrow=LAST)Метод create_rectangle создает прямоугольник. Аналогично линии в скобках первыми аргументами прописываются четыре числа. Первые две координаты обозначают верхний левый угол прямоугольника, вторые — правый нижний. x = 70 y = 110 c.create_rectangle(x,y,x+80,y+50,fill="white",outline="blue")Опция outline определяет цвет границы прямоугольника. Многоугольник определяется парами координат для каждой его точки. c.create_polygon([250,100],[200,150],[300,150],fill="red")Квадратные скобки при задании координат используются для удобочитаемости (их можно не использовать). Свойство smooth задает сглаживание. canv . create _ polygon (300,80,400,80,450,75,450,200,300,180,330, \ 160, outline =" brown ", smooth =0, width =4) c.create_polygon(300,380,400,380,450,375,450,500,300,480,330, \ 460,outline="orange",smooth=1,width=4)При создании эллипса задаются координаты прямоугольника, описывающего данный эллипс. c.create_oval(10, 10, 110, 110, width=2) c.create_oval(10, 120, 190, 190, fill='yellow', outline='white')Более сложная фигура получается методом create_arc. В зависимости от значения опции style можно получить сектор (по умолчанию), сегмент (CHORD) или дугу (ARC). Координаты по-прежнему задают прямоугольник, в который вписана окружность, из которой «вырезают» сектор, сегмент или дугу. От опций start и extent зависит угол фигуры. c.create_arc(160,230,230,330,start=0,extent=240, fill="lightgreen") c.create_arc(250,230,320,360,start=30,extent=300,style=CHORD, fill="green", width=5) c.create_arc(340,230,410,330,start=0,extent=140,style=ARC, outline="darkgreen", width=2)Последний метод объекта canvas, который будет рассмотрен в этом уроке — это метод создающий текстовую надпись. c.create_text(20,430,text="РӘСЕМНӘР",font="arial 36", anchor="w", justify=CENTER,fill="darkred")Трудность здесь может возникнуть с пониманием опции anchor (якорь). По умолчанию в заданной координате располагается центр текстовой надписи. Чтобы изменить это и, например, разместить по указанной координате левую границу текста, используется якорь со значением w (от англ. west – запад). Другие значения: n, ne, e, se, s, sw, w, nw. Если букв, задающих сторону привязки две, то вторая определяет вертикальную привязку (вверх или вниз «уйдет» текст от координаты). Свойство justify определяет выравнивание текста. Часто требуется нарисовать повторяющиеся элементы, изображение которых обеспечивается через циклы. Например: y=10 while y<450: c.create_rectangle(520,y,570,y+50,fill="lightgrey") c.create_line(y,520,y+50,570,fill="green",width=10) c.create_line(y+50,520,y,570,fill="darkgreen", width=10) y + = 60Программа завершается canv.pack()root.mainloop() Приведенный код даст следующее изображение: from tkinter import *def move(): x = int(txt_x.get()) y = int(txt_y.get()) c.move(ball, x, y) c.move(rect, x, y) c.move(rect_in, x, y) c.move(line1, x, y) c.move(line2, x, y) #c.move(ALL, x, y) root = Tk() txt_x = Entry() txt_x.pack() labelx = Label(text="x") labelx.pack() txt_y = Entry() txt_y.pack() labely = Label(text="y") labely.pack() c = Canvas(root, height=500) c.pack() rect = c.create_rectangle(10, 55, 75, 120, fill='orange') ball = c.create_oval(10, 55, 75, 120, fill='yellow') rect_in = c.create_rectangle(20,65,65,110, fill='white') line1 = c.create_line(10,55,43,20) line2 = c.create_line(43,20,75,55) btn = Button(root, text="Переместить", command = move) btn.pack() root.mainloop() Текст в CANVAS # -*- coding: utf8 -*- import turtle from tkinter import * root=Tk() root.title('Домик ') c = Canvas(root,width=500,height=500,bg="lightblue",cursor="pencil") c.create_rectangle(20,150,300,450,fill="green",outline="black") c.create_polygon([20,150],[160,30],[300,150],fill="blue",outline="blue") c.create_polygon([300,450],[300,300],[400,300],[400,375],[480,375], \ [480,450],fill="red",outline="red") c.create_oval(400,10,480,80,fill="yellow",outline="yellow") c.create_line(300,150,300,30,width=2,fill="black") c.create_line(300,30,270,0,width=2,fill="black") c.create_line(300,30,330,0,width=2,fill="black") c.create_arc([20,20], [100,100], start=220, extent=180, style=ARC, \ outline="darkred",width=2) c.create_text(40,320,text="Домик в деревне .",font="Verdana 12", \ anchor="w",justify=CENTER,fill="darkblue") c.create_text(40,340,text="Вот моя деревня ,",font="Verdana 12", \ anchor="w",justify=CENTER,fill="darkblue") c.create_text(40,360,text="Вот мой дом родной .",font="Verdana 12", \ anchor="w",justify=CENTER,fill="darkblue") c.create_text(40,380,text="Вот качусь я в санках ",font="Verdana 12", \ anchor="w",justify=CENTER,fill="darkblue") c.create_text(40,400,text="По горе крутой ...",font="Verdana 12", \ anchor="w",justify=CENTER,fill="darkblue") c.pack() root.mainloop() Поворот рисунка
90 градусов, 45 градусов __author__ = 'PVKlenkov'
Второй пример программы вращения, использующей полигон четырех угольника с изменением координат примитивов.
from tkinter import * Поточечное перемещение рисунка. from tkinter import * img = PhotoImage(file=r"rasem.png") Пример 10. Рассмотрим центральную симметрию для случайного треугольника. from math import *from tkinter import * import random from tkinter import messagebox as mb def click_button_1(): c.delete("all") ax = random.randint(0,800) ay = random.randint(0,800) bx = random.randint(0,800) by = random.randint(0,800) cx = random.randint(0,800) cy = random.randint(0,800) c.create_polygon(ax, ay, bx, by, cx, cy) c.create_line(400,800,400,0, arrow=LAST) c.create_line(0,400,800,400, arrow=LAST) if mb.askyesno(title="Вопрос", message="Построить симметричный треугольник?\n \ Симметрик э чпочмак сызыргамы?\n \ Construct a symmetrical triangle"): def click_symmetry_button(ax, ay, bx, by, cx, cy): c.create_polygon( 800- ax, 800- ay, 800- bx, 800- by, 800- cx, 800- cy, fill = 'red') root = Tk() c = Canvas(root, height=800, bg="white") c.create_line(400,8000,400,0,width=2,arrow=LAST) c.create_line(0,400,800,400,width=2,arrow=LAST) btn1 = Button(text="Треугольник\nЭчпочмак\nTriangle", background="#fff", foreground="#000", padx="20", pady="8", font="16", command=click_button_1) btn1.pack(side = LEFT) Получается следующее изображение Библиотека PIL Библиотека PIL – модуль Python Imafing Library, архивирующий изображения, создания эскизов, обработка мзображений, преобразование цветовых решений, аффинное преобразвание рисунка, вращение. From PIL import Image # Подключение модуля f=open(‘foto.jpg’,’rb) # Открытие файла рисунка Рисунок = f.read() Рисунок = Image.open(f) # Запись рисунка из файла Рисунок. size(800,800) # Определяется размер рисунка f. close() # Закрытие файла Рисунок[30,40] =(255,100,0) # определяет оранжевый цвет в точке (30, 40) Рисунок.getpixel((i,j)) # получает цвет пикселя Рисунок. putpixel(( i, j),(100,150)) # окрашивает цвет пикселя Рәсем = Рисунок . copy # создание копии в Рәсем Рисунок. show # просматриает изображение Рисунок.save(‘rasem.jpg’) # сохранение Рисунок= image. new(‘ RGB,(100,100),” green”) # cоздание нового изображения c зеленым фоном Рисунок . rotate(45б expand= true) # поворот рисунка на 45 градусов с увеличением размера. Пример 1. Перевод цветного рисунка в оттенки серого.
from PIL import Image, ImageDraw
Пример 2. Перевод серого рисунка в черно белый.
from PIL import Image, ImageDraw else : кар. point(( i, j), ( S, S, S))# среднеарифмитисекого серого цвета
Пример 3. Для перенесения одного фрагмента рисунка на другой можно написать следующую программу. from PIL import Image s=Image.open("1.jpg") # открытие файла с первым рисунком g= Image. open("2. jpg") # открытие файла со вторым рисунком area=(150,150,350,350) # определение выбираемой области s. paste( g, area) # нанесение рисунка "2. jpg" на "1. jpg" s.show() # получение изображения рисунка |
Последнее изменение этой страницы: 2019-03-21; Просмотров: 1044; Нарушение авторского права страницы