Возможно ли сделать фон turtle.Screen () прозрачным? - PullRequest
0 голосов
/ 21 февраля 2019

Можно ли сделать turtle.Screen() фон прозрачным?Если нет, то как рисовать линии на экране?Я хочу создать программу, которая дает мне советы по игре в бильярд.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Суть этого ответа аналогична ответу @ cdlane: получите ссылку на корневое окно Tk и установите его прозрачность с помощью myroot.attributes('-alpha', 0.3).Ответ cdlane получает корневое окно, начиная с Tk и создавая все необходимые объекты Tk перед созданием TurtleScreen и Turtle.Этот ответ начинается с другого конца: он позволяет 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)
0 голосов
/ 21 февраля 2019

Поскольку черепаха построена поверх 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

Другими словами, «возможно».

...