【发布时间】:2019-03-15 21:46:18
【问题描述】:
我正在尝试在 Python 乌龟下找到画布的颜色。我使用canvas.find_overlapping,但只有在我否定ycor 时才会成功,这意味着与显示的内容相比,画布对象中的y 轴是倒置的。是我的代码有问题还是y轴倒转了?
import turtle
wn = turtle.Screen()
maze_drawer = turtle.Turtle()
maze_drawer.color("purple")
maze_drawer.speed("fastest")
path_width = 15
def get_pixel_color(x, y):
c = turtle.Screen().getcanvas()
# -y should not work??
items = c.find_overlapping(x, -y, x, -y)
if len(items) > 0:
return c.itemcget(items[0], "fill") # get 0 object (canvas)
# draw simplified maze
wall_len = 0
for i in range(10):
maze_drawer.left(90)
wall_len += path_width
maze_drawer.forward(wall_len)
# navigate maze from center
maze_runner = turtle.Turtle()
maze_runner.color("green")
maze_runner.penup()
maze_runner.goto(-path_width, -path_width)
# test in y dir: maze_runner.setheading(90)
clear = True
while(clear):
maze_runner.forward(1)
color_at_turtle = get_pixel_color(maze_runner.xcor(), maze_runner.ycor())
if (color_at_turtle == "purple"):
clear = False
wn.exitonclick()
【问题讨论】:
-
turtle模块反转所有 y 坐标,以获得传统的海龟图形的 Y 轴向上行为。如果您绕过模块并直接使用 Tkinter,则需要自己进行反转。
标签: python pixel turtle-graphics tkinter-canvas