我想更改数据,只是将某些像素切换为白色或黑色,但我没有得到它的工作,我可以更改数据?当我使用行np.roll()时,它会滚动图像并更新它,但是当我使用任何其他方法简单地更改数据数组的值时,我失败了?Tkinter更改数据
我该怎么做,我错了什么?
import Tkinter
from PIL import Image, ImageTk
import numpy
import time
times=1
timestart=time.clock()
data=numpy.array(numpy.random.random((68,68))*100,dtype=int)
#data = numpy.zeros([68,68])
photo = None
sw = 1
def image_loop():
global data
global times
global timestart
global photo
im=Image.fromstring('L', (data.shape[1],data.shape[0]), data.astype('b').tostring())
photo = ImageTk.PhotoImage(image=im)
canvas.create_image(0,0,image=photo,anchor=Tkinter.NW)
root.update()
times+=1
if times%33==0:
print "%.02f FPS"%(times/(time.clock()-timestart))
root.after(100,image_loop)
### THE next line WORKS, why not the others ???????
#data=numpy.roll(data,-1,1)
### Does not work ??
global sw
if sw == 0:
for i in range(68):
data[10][i] * 100
#data = numpy.array(numpy.zeros(68,68))
sw = 1
print "hi"
else:
sw = 0
for i in range(68):
data[10][i]/100
data = numpy.array(numpy.ones(68,68))
#data = data * 100
print "ho"
root = Tkinter.Tk()
frame = Tkinter.Frame(root, width=68, height=68)
frame.pack()
canvas = Tkinter.Canvas(frame, width=68,height=68)
canvas.place(x=-2,y=-2)
root.after(0,image_loop) # INCREASE THE 0 TO SLOW IT DOWN
#root.mainloop()
while True:
print "do work again and again, change data"
root.update()
root.update_idletasks()
print data.shape
为什么我在这里投票? –