Малюємо декартові координати та графіки Python, Turtle. Зберігаємо область екрану в картинку Pillow

from turtle import * import math from random import randint #Клас, що малює нові декартові координати class drawDecart(): def draw_Right(self): home();down(); goto(350,0); stamp(); up(); def draw_Up(self): home();down(); left(90);down(); goto(0,350); stamp(); up() def draw_Down(self): home(); down(); goto(0,-350); up() def draw_Left(self): home(); down(); goto(-350,0); up() def drawDecart(self): self.draw_Right() self.draw_Up() self.draw_Down() self.draw_Left() def __init__(self): #super().__init__() self.drawDecart() up() #Клас, що малює точку з координатами class drawPoint(): def drawPoint(self,x,y,size=5): goto(x,y) down() dot(size, "blue") #stamp() def __init__(self,x=0,y=0,size=5): self.x = x self.y = y self.size = size #self.drawPoint() class drawGraph(drawPoint,drawDecart): #Записуємо формулу 1, за якою буде малюватися графіка def formula1(self,x): if x > 0: y = math.sqrt(abs(x)) else : y = 0 return y #Записуємо формулу 2, за якою буде малюватися графіка def formula2(self,x): y = (x**2) + 4 return y #Записуємо формулу 3, за якою буде малюватися графіка def formula3(self,x): if x != 0: y = 10/x else : y = 0 return y #Створює набір чисел, що будуть областю визначення def addArrayNum(self,size): arNum = [] minSize = round((size/2)*(-1),2) for i in range (size+1): arNum.append(minSize) minSize += 1 #arNum.append(minSize) return arNum #Обробляє формулу, створює область значень def searchArrY(self,arrX): arrY = [] match self.typeGraph: case 1: for i in range(len(arrX)): arrY.append(self.formula1(arrX[i])) case 2: for i in range(len(arrX)): arrY.append(self.formula2(arrX[i])) case 3: for i in range(len(arrX)): arrY.append(self.formula3(arrX[i])) return arrY def __init__(self, showSize=100, poinSize=10, typeGraph=1): #super().__init__() setup (width=800, height=800, startx=0, starty=0) self.drawDecart() self.typeGraph = typeGraph self.dF = self.addArrayNum(showSize) print(self.dF) self.arY = self.searchArrY(self.dF) print (self.arY) #Масштабує числа для нормального відображення на екрані for p in range(len(self.arY)): self.dF[p] = self.dF[p] *10 self.arY[p] = self.arY[p] *10 #write (screensize()) #delay(2000) up() super().__init__() for p in range(len(self.arY)): self.drawPoint(self.dF[p], self.arY[p],poinSize) up() #Малює декарт нові координати #Малюємо графік drawGraph(20,5,3) #Зберігаємо файл from PIL import ImageGrab ss_region = (10, 40, 800,800) ss_img = ImageGrab.grab(ss_region) ss_img.save("SS3.jpg") #Вимикає екран, після натискання exitonclick()

Коментарі