如何将海龟的形状设置为 PIL 图像

How do you set a turtle's shape to a PIL image

快速提问: 是否可以从 PIL 图像对象注册 python 海龟形状? 最好不要将其保存为磁盘上的文件。

注意:我正在使用多个 PIL 对象。我的意思是我同时加载了多个图像,所以我需要可以同时处理多个形状的东西。 不会合并任何图像。 (只是为了澄清。)

另外:是否可以创建一个 'fake file' 之类的 stdout 之类的东西?一般来说,这会派上用场。

这不是重复的。它不是在询问如何正常设置海龟形状,而是关于如何将其设置为 PIL 对象。这与路径字符串不同。

我已经拼凑了使用 PIL(例如来自 JPG)创建海龟光标图像所需的步骤。我在 tkinter embedded turtle 中使用 turtle standalone 你可以在 Tk 设置和失败之前轻松调用 PIL 的 ImageTk:

from tkinter import *
from turtle import TurtleScreen, RawTurtle, Shape
from PIL import Image, ImageTk

def register_PIL(name, image):
    photo_image = ImageTk.PhotoImage(image)
    shape = Shape("image", photo_image)
    screen._shapes[name] = shape  # underpinning, not published API

root = Tk()

canvas = Canvas(root, width=500, height=500)
canvas.pack(fill=BOTH, expand=YES)

screen = TurtleScreen(canvas)
turtle = RawTurtle(screen)

image = Image.open("test.jpg")
register_PIL("aardvark", image)
turtle.shape("aardvark")

# ...

screen.mainloop()

您可以小心地对独立乌龟执行相同的操作。