保存海龟图

2024-06-17 13:08:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个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.


Tags: 文件代码用户程序图形save绘制ide
2条回答

我相信其他人会想知道怎么做,所以这是一个恰当回答的好问题。这是可以做到的,但是您需要使用本机Tk方法,而不是试图依赖于Turtle脚本。枕头也有帮助,因为你可以得到更好的渲染效果

我记得,背景色不显示。要获得背景信息,您需要对屏幕截图实用程序进行子流程调用,该实用程序允许在您的操作系统上使用命令行(例如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

听着,你应该来这里学习如何自己解决问题。根据我的提示,你应该能够解决这个问题。这不是一个代码编写服务。另外,你的问题陈述不够清楚。你说“直接保存到用户文件”。这对你意味着什么?文档目录?他的主目录?你想让他选择吗?你真的想每次都使用相同的文件名吗

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

相关问题 更多 >