是否可以使 turtle.Screen() 背景透明?

Is it possible to make turtle.Screen() background transparent?

是否可以使 turtle.Screen() 背景透明? 如果不是那么如何在屏幕上画线? 我想创建一个程序来提示我玩台球游戏。

由于 turtle 是在 tkinter 之上构建的,如果我们使用 嵌入式 turtle,而不是 standalone,那么您可以创建一个transparent turtle window 是你的 Tk 库版本和操作系统平台的函数:

import tkinter as tk
from turtle import RawTurtle, TurtleScreen, ScrolledCanvas

root = tk.Tk()
root.attributes("-alpha", 0.3)

canvas = ScrolledCanvas(root)
canvas.pack()

screen = TurtleScreen(canvas)

turtle = RawTurtle(screen)
turtle.width(10)

turtle.penup()
turtle.sety(-100)
turtle.pendown()
turtle.circle(100)

screen.mainloop()

换句话说,"maybe"。

这个答案的本质和@cdlane的答案是一样的:获取对Tk根window的引用,并用myroot.attributes('-alpha', 0.3)设置它的透明度。 cdlane 的答案通过从 Tk 开始并在构造 TurtleScreen 和 Turtle 之前构造所有必要的 Tk 对象来获得 rootwindow。这个答案从另一端开始:它允许 turtle 初始化它需要的 Tk 对象,并遍历对象引用从 turtle 到 Tk root window.

然后两个答案都设置了 Tk 根 window 的透明度。哪种方法更有用取决于您的用例。

代码(尽量与cdlane的相似):

from turtle import *

turtle = getturtle()

# This does not have to come before the drawing code --
# you can alter window transparency at any moment.    
root = (turtle
    ._screen
    .getcanvas()
    .winfo_toplevel())
root.attributes('-alpha', 0.3)

turtle.width(10)

turtle.penup()
turtle.sety(-100)
turtle.pendown()
turtle.circle(100)