0

I´d like to make a scrollbar to scroll over a canvas filled with pics. The Problem i´m facing is, that instead of using the scrollbar the frame just gets bigger. No matter what I do the Frame always resizes with the the canvas filled with pictures. If I force the the maxsize to any value the Frame won't get bigger, but the Scrollbar then isn't scrollable either. Here is the Code i wrote:

from Tkinter import *
from tkFileDialog import *
from PIL import Image, ImageTk

class Gui(Frame):

    def __init__(self, master=None):
        Frame.__init__(self,master)
        self.pack(expand=False, fill=BOTH)
        self.master.title("Picscroll")
        self.master.minsize(400,400)


        scroll = Picscroll(self)
        scroll.pack(fill=Y, side=LEFT)


class Picscroll(Frame):

    def __init__(self, master=None):
        Frame.__init__(self,master)

        canvas = Canvas(self)
        canvas.config(scrollregion=canvas.bbox("all"))

        yscrollbar = Scrollbar(self, width=16, orient=VERTICAL)
        yscrollbar.pack(side=RIGHT, fill=Y)
        yscrollbar.config(command=canvas.yview)

        canvas.config(yscrollcommand=yscrollbar.set)
        canvas.pack(side=LEFT, expand=True, fill = BOTH)

        size = 64, 64               #rendering TestPic
        File = r"Download.png"
        img = Image.open(File)
        img.thumbnail(size)
        render = ImageTk.PhotoImage(img)

        for i in range(20):         #filling canvas with testpics
            for j in range(2):
                label1 = Label(canvas, image=render)
                label1.image = render
                label1.grid(column=j, row=i)


a = Gui()
a.mainloop()

Please excuse my English skills

Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685

0 Answers0