这确实很棘手-
我以为您必须使用Canvas小部件,但这也无法访问Pixels。但是,嵌入在画布中的图像项确实具有。Tkinter.PhotoImage类确实具有“
put”方法,该方法接受十六进制格式的颜色和像素坐标:
from Tkinter import Tk, Canvas, PhotoImage, mainloopfrom math import sinWIDTH, HEIGHT = 640, 480window = Tk()canvas = Canvas(window, width=WIDTH, height=HEIGHT, bg="#000000")canvas.pack()img = PhotoImage(width=WIDTH, height=HEIGHT)canvas.create_image((WIDTH/2, HEIGHT/2), image=img, state="normal")for x in range(4 * WIDTH): y = int(HEIGHT/2 + HEIGHT/4 * sin(x/80.0)) img.put("#ffffff", (x//4,y))mainloop()好消息是,即使以此方式进行,更新也是“实时的”:您在图像上设置了像素,并在屏幕上看到了它们。
这应该比在屏幕上绘制更高级别的线条的速度快得多-
但是对于许多像素,由于每个像素都需要Python函数调用,因此它仍然会很慢。直接操纵像素的任何其他纯python方式都会遭受该痛苦-
唯一的出路是从您的Python代码中调用在本机代码中一次操纵多个像素的基元。
开罗是一个很好的跨平台库,可用于获取2D绘图,但是开罗文档的文献也很少,它应该比Tkinter的Canvas或PhotoImage具有更好的基元。



