在Python 2.7中,我想显示一些简单的图形,例如在蓝色窗口上移动的红色正方形。在每一帧上,我想更新正方形的位置,并渲染新窗口。我正在寻找简单轻便的东西。
我见过人们使用matplotlib绘制形状,但我不想处理轴和数据点。我也看到了pygame的建议,但这似乎是我想要的重量级,因为我不想创建一个游戏,只是一个简单的动画。
所以我真正想要的是在每一帧上,我只是指出图像上每个像素的颜色,然后显示该图像。有什么好建议?
答案 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 image(you also need this link to display the images),我已经成功(仅在教育设置中)编写图形引擎。
这可以让你进行像素级修改;因为编写修改numpy数组的C扩展程序相对简单,所以可以对自定义操作的快速图像处理进行原型设计。虽然我以这种方式使用tkinter编写whole graphics engines,但我再次只能将其用于教育目的。
否则,只需咬紧牙关并拉入openGl或pygame。从长远来看,你将为自己节省大量时间。
<强>摘要强>