help please: tkinter grid layout is very slow

Terry Reedy tjreedy at udel.edu
Thu Nov 13 23:14:26 CET 2014


On 11/13/2014 3:45 PM, Rich Cook wrote:
> Hi, I'm trying to toss together an image browser in tkinter, and it is so slow it is unworkable.  Here is my code.  Can someone point out why it's so sloooow?  :-)  Thanks
>
> root = Tkinter.Tk()
> root.geometry("1000x280+300+300")
> label = Tkinter.Button(root, compound=Tkinter.TOP)
> label.pack()
>
> numimages = len(image_list)
> numcols = 6
> numrows = numimages/numcols

That should be numimages // numcols

> if numrows * numcols != numimages:
>      numrows += 1
>
> frame = Tkinter.Frame(root)
> for col in range(numcols):
>      frame.columnconfigure(col, pad=2)
>
> for row in range(numrows):
>      frame.rowconfigure(row, pad=2)
>
> print "There are", numimages, "images"  # 256 in fact...
> for imagenum, (row, col) in enumerate([(row,col) for row in range(numrows) for col in range(numcols)]):
>      b = Tkinter.Label(frame, compound = Tkinter.TOP)
>      b['text'] = os.path.basename(image_list[imagenum])
>      b['image'] = ImageTk.PhotoImage(Image.open(image_list[imagenum]) )

ImageTk? or Tkinter?

>      b.grid(row=row, column = col)
>
> frame.pack()
>
> root.mainloop()
>


-- 
Terry Jan Reedy




More information about the Python-list mailing list