如何在python中使用onkey函数更改列表的位置
我想通过使用onkey函数制作的如何在python中使用onkey函数更改列表的位置,python,list,turtle-graphics,Python,List,Turtle Graphics,我想通过使用onkey函数制作的shapes=[“正方形”、“三角形”、“圆形”]列表来更改海龟的形状。我的意思是,每当我按下一个按钮,例如h,我将如何使它在我按下h时通过每个形状。我将使用turtle.shape()函数来实现这一点 到目前为止,我所做的是创建一个形状列表,但我不知道如何实现下一个我想要实现的目标 def turtle1 (): shapes = ["square", "triangle", "circle", "pentagon", "star", "octagon
shapes=[“正方形”、“三角形”、“圆形”]
列表来更改海龟的形状。我的意思是,每当我按下一个按钮,例如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")
将允许您无限期地循环一个序列
>>> t = itertools.cycle((1, 2, 3))
>>> next(t)
1
>>> next(t)
2
>>> next(t)
3
>>> next(t)
1
>>> next(t)
2
这个问题似乎没有适当的结尾,所以我将尝试这样做 下面是使用@IgnacioVazquez Abrams'
itertools.cycle()
基于解决方案的重写@海登的原始代码列出了不一定有效的形状,这可能导致他的代码过早退出。我使用了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”循环浏览所有内置的海龟形状。我是否将数字替换为形状?您将使用希望循环浏览的任何序列替换函数的参数,例如
shapeiter=itertools.cycle(shapes)
。请确保只调用该函数一次。好的,让我尝试一下,我会发布我的发现。我尝试了编辑文章中的操作,但似乎不起作用。next()
返回一个值。你需要做一些有价值的事情。