保存乌龟绘图

Save turtle drawing

我正在制作一个 python 程序,它在其中绘制一个正方形,我希望用户能够在用户按 q 时保存绘图。它所做的只是将图像添加到 ide 文件目录。如果有帮助,我使用 Replit 作为我的 ide。它不会将其直接保存到用户文件中。相关代码如下:

import turtle
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
def save():
 ts = turtle.getscreen()
 ts.getcanvas().postscript(file="Square.png")
turtle.onkeypress(save, key="q")

提前致谢!

If it is os specific Windows, Chrome Os, and Mac.

看,你应该来这里是为了获得有关如何自行解决问题的提示。根据我的提示,你应该能够解决这个问题。这不是代码编写服务。另外,你的问题陈述不够清楚。您说“将其直接保存到用户文件”。这对你来说代表着什么?文档目录?他的主目录?你想让他选择吗?而且你真的想每次都使用相同的文件名吗?

import os
...
def save():
   filename = os.environ["HOME"] + "/Square.png"
   ts = turtle.getscreen()
   ts.getcanvas().postscript(file=filename)
turtle.onkeypress(save, key="q")

我相信其他人会想知道如何做,所以这是一个需要正确回答的好问题。这是可以做到的,但是您需要使用本地 Tk 方法,而不是试图依赖 Turtle 脚本。 Pillow 也有帮助,因为您可以获得更好的渲染效果。

我记得没有显示背景颜色。要获得背景知识,您需要对屏幕截图实用程序执行子进程调用,该实用程序允许在 OS 上使用命令行(例如 Linux 上的 scrot)。

#! /usr/bin/python3

import tkinter as tk
from tkinter import filedialog as fd
from PIL import Image  ##  Python Imaging Libary / Pillow
import turtle as trt
import os  ##  os.path.join( directory, filename )

##  pip3 install pillow

root  = tk .Tk()
root .title( 'Python Turtle' )
home  = os .environ['HOME']

Width, Height  = 500, 500
canvas  = tk .Canvas( root, width=Width, height=Height )
canvas .pack()

turtle  = trt .RawTurtle( canvas=canvas )
screen  = turtle .getscreen()
##  screen .bgcolor('orange')  ##  doesn't show with canvas grab

for i in range(4):
    turtle .forward(50)
    turtle .left(90)

    def screenshot():
        filename  = 'Square'
        directory  = fd .askdirectory( initialdir=home, title='Choose folder' )
        fullpath  = os .path .join( directory,  filename )
        eps, png  = f'{fullpath}.eps',  f'{fullpath}.png'
        canvas .postscript( file=eps,  pagewidth=Width -1,  pageheight=Height -1 )
        print( 'saved', eps )
        img  = Image .open( eps )  ##  use PIL to convert to PNG
        img .save( png, 'png', optimize = True, compress_level = 9 )
        os .remove( eps )
        print( f'converted to', png )

screen .onkeypress( screenshot,  key='q' )
screen .listen()
root .mainloop()

https://docs.python.org/3/library/dialog.html
How can I close and re-open Turtle Screen in Python