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

时间:2019-02-21 19:08:49

标签: python turtle-graphics

是否可以使train_inds, test_inds = next(GroupShuffleSplit(test_size=.20, n_splits=2, random_state = 7).split(df, groups=df['Group_Id'])) train = df.iloc[train_inds] test = df.iloc[test_inds] 背景透明? 如果没有,那么如何在屏幕上画线? 我想创建一个给我有关台球游戏的提示的程序。

2 个答案:

答案 0 :(得分:2)

由于乌龟是在tkinter上构建的,因此,如果我们使用嵌入式乌龟,而不是独立,那么您创建透明乌龟窗口的能力取决于您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()

enter image description here

换句话说,“也许”。

答案 1 :(得分:0)

此答案的实质与@cdlane的答案相同:获取对Tk根窗口的引用,并使用myroot.attributes('-alpha', 0.3)设置其透明度。 cdlane的答案通过从Tk开始并在构造TurtleScreen和Turtle之前构造所有必需的Tk对象来获得根窗口。这个答案从另一端开始:它允许turtle初始化所需的Tk对象,并遍历对象引用以从乌龟获取到Tk根窗口。

两个答案都将设置Tk根窗口的透明度。哪种方法更有用取决于您的用例。

代码(使其与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)