python TK scrollbar problem

James Stroud jstroud at mbi.ucla.edu
Mon Apr 30 19:52:34 EDT 2007


Ray wrote:
> Hi,
> 
> would someone tell me how to make scrollbar work under grid?
> I think I'm missing something to connect scrollbar with the grid.
> following is some sample code. it shows the scrollbar, but it do not work.
> 
> Thanks a lot for the help!
> 
> Ray
> 
> #####code begin########
> from Tkinter import *
> def mygrid(text,M = []):   
>     while M:
>         x = M.pop()
>         x.destroy()
>     rows = []
>     count=int(text)
>     yscroll = Scrollbar(frame_grid, orient='vertical')
>     yscroll.grid(rowspan=count, column=5, sticky=NS)
>     M.append(yscroll)   
>     for i in range(count):
>         cols = []
>         for j in range(4):
>             e = Entry(frame_grid, relief=RIDGE)
>             M.append(e)
>             e.grid(row=i, column=j, sticky=NSEW)
>             e.insert(END, '%d.%d' % (i, j))
>             cols.append(e)
>             rows.append(cols)
>            
> root=Tk()
> frame_entry=Frame(root, width=550, height=100)
> frame_entry.pack()
> text=Entry(frame_entry)
> text.pack(side=LEFT)
> button=Button(frame_entry, text='generate grid', 
> command=(lambda:mygrid(text.get())))
> button.pack()
> frame_space=Frame(root, width=550, height=100)
> frame_space.pack()
> frame_grid=Frame(root, width=550, height=300, relief=GROOVE)
> frame_grid.pack()
> frame_exit=Frame(root, width=550, height=100)
> frame_exit.pack()
> button2=Button(frame_exit, text='exit', command=root.quit)
> button2.pack()
> root.mainloop()

You are not binding to the Scrollbar.set() method nor are you assigning 
  the Scrollbar a command. You should try to emulate this:

http://www.pythonware.com/library/tkinter/introduction/x7583-patterns.htm

You need to also determine exactly what it is you want to scroll. You 
probably don't want to scroll frame_grid as that contains your 
scrollbar. Google "tkinter scrolled frame". Here is an example:

http://mail.python.org/pipermail/python-list/2007-February/427886.html

So, a suggestion would be to create a new frame to hold frame_grid and 
yscroll and then use yscroll to scroll frame_grid.

James



More information about the Python-list mailing list