[Tutor] canvas -> make an object 'seem' to move
Teresa Stanton
tms43 at clearwire.net
Mon May 7 23:56:25 CEST 2007
Thank you, that was the correct direction. What I ended up doing is this:
def onClickVertical(newY, xp, yp):
for i in range(newY): #nextX gives how many steps to the next position
yp += .8 #moves to correct position
canvasOne.coords(ph, xp, yp)
time.sleep(.001) #creep along at a nice pace
canvsasOne.update()
It will move on the event, but then it moves back to the beginning and moves
again after its been clicked. I had posted in the Tkinter messageboard
previously, but no one responded. I am thinking that one is .... dead (for
lack of a better term).
I seem to be stuck again. I've attached my entire file (and the .gif I'm
using. My son made this .gif, its our lab). The problem is my xp (the
variable I use for my x coordinate) isn't updating after the .gif moves. I
think I should probably organize the entire module better, but then again,
I've never written anything this big in Python, and nothing like this in
Tkinter. So, perhaps someone will have a suggestion?
Thank you
T
----- Original Message -----
From: "John Fouhy" <john at fouhy.net>
To: "Teresa Stanton" <tms43 at clearwire.net>
Cc: <tutor at python.org>
Sent: Thursday, May 03, 2007 4:36 PM
Subject: Re: [Tutor] canvas -> make an object 'seem' to move
> On 04/05/07, Teresa Stanton <tms43 at clearwire.net> wrote:
>> the image and moves it. I should mention that I've tried 'move() and
>> coord()' to get the object to move, but I am not getting the effect I
>> want.
>> When I use move in successive steps it just appears at the last move
>> coordinates.
>
> My Tkinter is quite rusty, but I think this is basically the approach
> you need to take. However, you will need to put a delay in between
> each call to coords, otherwise python will "optimise" by moving the
> image to its final destination before drawing.
>
> Something like:
>
> # given initial coords (x0,y0), final coords (x1, y1)
> img = canvas1.create_image(x0, y0, image=photo)
>
> # step: number of steps to move in
> step = 10.0
> # duration: number of seconds to move the image
> dur = 2
>
> for i in range(1, int(step)+1):
> xi = x0 + i*(x1-x0)/step
> yi = y0 + i*(y1-y0)/step
> canvas1.coords(img, xi, yi)
> time.sleep(dur/step)
> # you may need to add a call to canvas1.update_idletasks() here
>
> # untested
>
> HTH!
>
> --
> John.
>
>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: canvasBack.pyw
Url: http://mail.python.org/pipermail/tutor/attachments/20070507/4038f1f1/attachment-0001.asc
More information about the Tutor
mailing list