theteacher.i...@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.
GUI programs are different from simple scripts; they have to react when the user resizes the window, clicks on a button, etc. The usual way to do that is to run an event loop permanently that calls functions that do something for a relatively small amount of time and then give control back to the loop. time.sleep() in contrast stops the whole script (I'm simplifying) and thus should not be used here. Instead you can use myGui.after() to trigger the execution of a Python function: > 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) # prepare a list of `PhotoImage`s to avoid having to load an image # more than once monster_images = [ PhotoImage(file="MonsterImages/Converted/" + monster) for monster in monsters] #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) myButton1.config(width="100", height="200") myButton1.place(x=500, y=300) def next_image(): myButton1.config(image=random.choice(monster_images)) # tell tkinter to invoke next_image() again after 200 miliseconds myGui.after(200, next_image) # invoke next_image() for the first time next_image() myGui.mainloop() -- https://mail.python.org/mailman/listinfo/python-list