在Python 2.7中,我想要显示一些简单的图形,例如红色方块在蓝色窗口上移动。在每一帧上,我想更新正方形的位置,并渲染新窗口。我正在寻找简单和轻量级的东西。Python 2.7中的简单动画
我见过人们使用matplotlib绘制形状,但我不想处理轴和数据点。我也看过pygame的建议,但这似乎是我想要的重量级,因为我不想创建一个游戏,只是一个简单的动画。
所以我真正想要的是在每一帧上,我只是指出图像上每个像素的颜色,然后显示该图像。有什么好的建议?
在Python 2.7中,我想要显示一些简单的图形,例如红色方块在蓝色窗口上移动。在每一帧上,我想更新正方形的位置,并渲染新窗口。我正在寻找简单和轻量级的东西。Python 2.7中的简单动画
我见过人们使用matplotlib绘制形状,但我不想处理轴和数据点。我也看过pygame的建议,但这似乎是我想要的重量级,因为我不想创建一个游戏,只是一个简单的动画。
所以我真正想要的是在每一帧上,我只是指出图像上每个像素的颜色,然后显示该图像。有什么好的建议?
Tkinter不适合设置单个像素。如果你想移动长方形或椭圆形(小椭圆看起来像一个像素,但它不能缩放以更新整个图像)。
def update(x,y):
canvas.delete('all')
canvas.create_rectangle(x-1,y-1,x+1,y+1)
您当然可以更明智地保存矩形的返回值,然后只清除适当的元素。或者,您可以像Bryan指出的那样直接移动现有的元素。 As he explains elsewhere Tkinter当然支持绘制图像,椭圆形和其他东西。 Here's a canonical source编辑:这是旧的,不canoncialThis one's slightly better有关使用定时器循环动画一般的来源,here's Bryan agian
布赖恩还指出,你可以直接像素的工作You can do that with PhotoImage。不带图形扩展
类似数组的像素访问像pygame的一个强大的模块将是最具扩展性的选择。不过,我通过修改numpy数组的元素,然后displaying it as an image(you also need this link to display the images),成功(在教育设置中只有)编写图形引擎。
这可以让你做像素级修改;因为编写修改numpy数组的C扩展比较简单,所以您可以对快速图像处理进行原型制作,以执行自定义操作。虽然我用这种方法写了whole graphics engines,但我只能推荐它用于教育目的。
否则,只要硬着头皮,拉openGl或pygame。长远来看,你会为自己节省很多时间。
摘要
无需删除并重新创建画布上的项目。您可以移动现有的项目。另外,你提到了做动画的典型例子,但这个例子绝对不是规范的。最后,使用tkinter可以处理图像中的单个像素。这有点慢,但是如果你不一次改变太多个别像素,速度就够快了。 –
@BryanOakley更好?我觉得这个源码对于1998年的时间旅行者来说已经足够规范:)(没有看看我抓住effbot页面的日期)。 PIL方法是什么意思的像素操作?我见过你编写tcl扩展来修改小部件,但我不熟悉任何tkinter本地直接像素访问例程 –
你不需要PIL来操纵像素。 [PhotoImage](http://tkinter.unpythonic.net/wiki/PhotoImage)类(tkinter的一部分)具有获取和设置像素的方法。 –
There a在本网站上重新提供许多与动画相关的问题和答案。在提出问题之前,你应该做更多的研究,在其他答案中尝试其中一种解决方案,然后在遇到困难时再回来询问具体问题。 –
有关完整的工作示例,请参阅http://stackoverflow.com/questions/6740855/board-drawing-code-to-move-an-oval/6789351#6789351 –