我想通过使用onkey函数更改已使用shapes = ["square", "triangle", "circle"]
的列表更改乌龟的形状。我的意思是每当我按下一个按钮时,例如h,我将如何制作它,以便每次按h时它都会通过每个形状。我将使用turtle.shape ()
函数来实现此目的。
到目前为止,我已经创建了一个形状列表,但我不知道如何实现我想要实现的下一个目标。
def turtle1 ():
shapes = ["square", "triangle", "circle", "pentagon", "star", "octagon"]
shapeiter = itertools.cycle(shapes)
next(shapeiter)
1
shape(next(shapeiter))
next(shapeiter)
2
shape(next(shapeiter))
next(shapeiter)
3
shape(next(shapeiter))
next(shapeiter)
4
shape(next(shapeiter))
next(shapeiter)
5
shape(next(shapeiter))
next(shapeiter)
6
shape(next(shapeiter))
onkey(turtle1, "h")
答案 0 :(得分:0)
itertools.cycle()
会让您无限期地循环播放序列。
>>> t = itertools.cycle((1, 2, 3))
>>> next(t)
1
>>> next(t)
2
>>> next(t)
3
>>> next(t)
1
>>> next(t)
2
答案 1 :(得分:0)
这个问题似乎没有得到适当的结束,所以我将尝试这样做。
以下是使用@ IgnacioVazquez-Abrams'itertools.cycle()
解决方案的重写。 @ Hayden的原始代码列出了不一定有效的形状,这可能导致他的代码过早退出。我使用turtle.getshapes()
来获取有效的形状,我还更改了窗口标题以提供形状名称:
import turtle
import itertools
def reshape():
turtle.shape(next(shape_iterator))
turtle.title(turtle.shape())
screen = turtle.Screen()
shape_iterator = itertools.cycle(screen.getshapes())
screen.onkey(reshape, "h")
screen.listen()
reshape()
screen.mainloop()
单击窗口使其激活,然后键入“h”以循环显示所有内置龟形状。