Как сохранить и восстановить параметры рисования Turtle-Graphics в / из файла? - PullRequest
0 голосов
/ 15 января 2020

Можно ли что-то нарисовать в Turtle, сохранить параметры рисования в файле или в БД, выйти из приложения и снова открыть его с нарисованной картиной?

1 Ответ

0 голосов
/ 19 января 2020

В случае, если кому-то интересно, я решил свою проблему следующим образом: так как я все еще плохо знаком с python, мне все еще не совсем комфортно с функцией обертки. Графика, нарисованная с помощью Turtle и сохраняемая в формате PNG, каждый раз, когда я пробегаю ее. Итак, теперь у меня есть обзор, где я нахожусь и как мне продолжать, если я закрою приложение

import turtle
from turtle import ScrolledCanvas, RawTurtle, TurtleScreen
from random import randint
from tkinter import *
from PIL import Image
import time
root = Tk()
cnt = 0
canvas = Canvas(root, width=800, height=800)
canvas.pack()

myPen = RawTurtle(canvas)
myPen.speed("fastest")

def drawTree(branchLen, t, size):
    global cnt
    cnt += 1
    makePicture(myPen, cnt)
    if branchLen > 5:
        if branchLen < 20:
            t.color("green")
        if size < 0:
            size = 1
            rsize = size
        else:
            rsize = size + 1

        myPen.pensize(size)
        tangle = 20
        t.forward(branchLen)
        t.right(tangle)
        drawTree(branchLen - randint(5, 15), t, size - 1)

        t.left(2 * tangle)
        drawTree(branchLen - randint(5, 15), t, size - 1)
        t.right(tangle)

        t.backward(branchLen)
        myPen.pensize(rsize)
        t.color("black")


def makePicture(myPen, cnt):
    nameeps = "tree.eps"
    ts = myPen.getscreen()
    ts.getcanvas().postscript(file=nameeps)
    saveImg(nameeps, cnt)

def saveImg(nameeps,cnt):
    image = "tree{}.png".format(cnt)
    canvas.postscript(file=nameeps, colormode='color')
    imgNew = Image.open(nameeps)
    imgNew.convert("RGBA")
    imgNew.thumbnail((2000,2000), Image.ANTIALIAS)
    imgNew.save(image, quality=95)

myPen.hideturtle()
myPen.penup()
size = 10
myPen.pensize(size)
myPen.goto(-50, -300)
myPen.pendown()
myPen.left(90)
drawTree(100, myPen, size)
root.mainloop()

Это всего лишь пример кода, который я пробовал около

...