Sequencing images using tkinter?
Terry Reedy
tjreedy at udel.edu
Sat Aug 30 15:52:07 EDT 2014
On 8/30/2014 11:54 AM, theteacher.info at gmail.com wrote:
> I've started to learn to use tkinter but can't seem to rotate images.
>
> Here is a Python 3.4 program to illustrate the problem.
> Anyone spot why the for loop doesn't seem to want to display
> a sucssession of images please? Thanks.
>
> import sys
> from tkinter import *
> import random
> from time import sleep
>
> myGui = Tk()
> myGui.geometry("1000x800+400+100")
> myGui.title("The Random Machine")
>
> monsters = ["py01.gif", "py02.gif", "py03.gif", "py04.gif", "py05.gif", "py06.gif", "py07.gif", "py08.gif",
> "py09.gif", "py10.gif", "py11.gif", "py12.gif", "py13.gif", "py14.gif", "py15.gif", "py16.gif",
> "py17.gif", "py18.gif", "py19.gif", "py20.gif",]
>
>
> #Main canvas
> canvas1 = Canvas(myGui, width=1000, height=800, bg="white")
> canvas1.place(x=0,y=0)
>
>
> #button
> myButton1=Button(canvas1, text='OK', justify = LEFT)
>
> for i in range(10):
> myImage = PhotoImage(file="MonsterImages/Converted/" + random.choice(monsters))
> myButton1.config(image=myImage, width="100", height="200")
> myButton1.place(x=500,y=300)
> sleep(0.2)
>
> myGui.mainloop()
I tried a simplified version of this in the Idle shell. Idle displays
call tips if you pause after typing '('. Unlike .pack and .grid, .place
apparently does not automatically put the widget in its master. At least
this is true when placing in a canvas. You need an 'in_' argument (the
'_' is needed to not be the keyword 'in'). Try
canvas1.pack() #don't use place unless really needed.
...
myButton1.place(in_=canvas1, x=500, y=300)
--
Terry Jan Reedy
More information about the Python-list
mailing list