首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'_Screen‘对象在尝试在海龟上使用canvasvg.saveall()时没有属性'tk’

'_Screen‘对象在尝试在海龟上使用canvasvg.saveall()时没有属性'tk’
EN

Stack Overflow用户
提问于 2022-10-31 00:47:26
回答 1查看 26关注 0票数 1

我做了一个奇怪的程序,可以绘制分形,圆和螺旋,我已经尝试了几个小时,以找到一种方法,以保存海龟输出到一个图像文件(最好是png或jpeg)。当我试图在海龟上使用_Screen()时,我会得到‘canvasvg.saveall’对象没有属性'tk‘。以下是代码:

代码语言:javascript
复制
import turtle
import random
import canvasvg

root = turtle.Screen()
drawing = 1
def save():
    canvasvg.saveall("spircles.svg", root)
print("turning angle:")
turningangle = float(input())
print("size:")
forward = float(input())
print("spiral:")
try:
    spiral = float(input())
    if spiral == None:
        spiral = random.random()
except:
    pass
    spiral = random.random()
turtle = turtle.Turtle(visible=False)
turtle.speed(speed=0)
turtle.hideturtle()
turtle.ht()
print("drawing. spiral:", spiral)
try:
    while drawing == 1:
        root.listen()
        root.onkey(save, "s")
        turtle.left(turningangle)
        turtle.forward(forward)
        turningangle += spiral
        spiral += (spiral / turningangle)
except Exception as e:
    drawing = 0
    pass
    print("done. press enter to exit. error:", e)
    input()
    exit()
turtle.mainloop()

有人知道一个简单的方法吗?已经试过PIL了但没起作用。我也不想安装第三方程序。我希望能够安装一些模块与pip (如果必要的话),并能够运行它没有麻烦。当用户按下"s“时,它应该保存到图像文件中。

我已经尝试过PIL和canvasvg.saveall(),我想要canvasvg.saveall(),因为它似乎是最简单的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-31 11:24:12

虽然Turtle使用tkinter.Canvas绘制形状,但Screen对象不是tkinter.Canvas对象,也不是tkinter.Widget。海龟为这个任务提供了一个方法,它叫做turtle.getcanvas,你可以在你的对象上使用它。所以canvas = root.getcanvas()应该工作得很好。

您似乎可以使用canvasvg.saveall(filename, canvas),但请注意,它们的状态是并非所有项目都受支持。

代码语言:javascript
复制
def save():
    canvas = root.getcanvas()
    canvasvg.saveall("spircles.svg", canvas)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74257785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档