Python 2.7中的简单动画

时间:2016-03-08 15:35:47

标签: python python-2.7 tkinter

在Python 2.7中,我想显示一些简单的图形,例如在蓝色窗口上移动的红色正方形。在每一帧上,我想更新正方形的位置,并渲染新窗口。我正在寻找简单轻便的东西。

我见过人们使用matplotlib绘制形状,但我不想处理轴和数据点。我也看到了pygame的建议,但这似乎是我想要的重量级,因为我不想创建一个游戏,只是一个简单的动画。

所以我真正想要的是在每一帧上,我只是指出图像上每个像素的颜色,然后显示该图像。有什么好建议?

1 个答案:

答案 0 :(得分:2)

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 编辑:这是旧的而不是典型的 This one's slightly better有关使用计时器循环制作动画的一般来源,here's Bryan agian

Bryan还指出,您可以直接使用像素You can do that with PhotoImage

没有图形扩展的类数组像素访问

像pygame这样的强大模块将是最具扩展性的选项。但是,通过修改numpy数组的元素然后displaying it as an imageyou also need this link to display the images),我已经成功(仅在教育设置中)编写图形引擎。

这可以让你进行像素级修改;因为编写修改numpy数组的C扩展程序相对简单,所以可以对自定义操作的快速图像处理进行原型设计。虽然我以这种方式使用tkinter编写whole graphics engines,但我再次只能将其用于教育目的。

否则,只需咬紧牙关并拉入openGl或pygame。从长远来看,你将为自己节省大量时间。

<强>摘要

  • 非常简单的动画可以在tkinter中完成
  • 出于教育目的,您可以使用numpy和tkinter进行任意图形处理
  • 对于rhobust动画,请查看适合您需求的完整库(openGl,matplotlib,pygame)(图形渲染,统计图表,游戏开发等)。