Ответ 1
Это действительно сложно - Я думал, вам нужно использовать виджет Canvas, но у него также нет доступа к пикселам. Однако элементы изображения, встроенные в холст, имеют. Класс Tkinter.PhotoImage имеет метод "put", который принимает цвет в синтаксисе html/css и пиксельных координатах:
from Tkinter import Tk, Canvas, PhotoImage, mainloop
from math import sin
WIDTH, HEIGHT = 640, 480
window = 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.