保存乌龟绘图
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
我正在制作一个 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