1 # A ScrolledList widget feels like a list widget but also has a
2 # vertical scroll bar on its right. (Later, options may be added to
3 # add a horizontal bar as well, to make the bars disappear
4 # automatically when not needed, to move them to the other side of the
7 # Configuration options are passed to the List widget.
8 # A Frame widget is inserted between the master and the list, to hold
9 # the Scrollbar widget.
10 # Most methods calls are inherited from the List widget; Pack methods
11 # are redirected to the Frame widget however.
14 from Tkinter
import _cnfmerge
16 class ScrolledListbox(Listbox
):
17 def __init__(self
, master
=None, cnf
={}):
20 vcnf
= {'name': 'vbar',
21 Pack
: {'side': 'right', 'fill': 'y'},}
23 if type(k
) == ClassType
or k
== 'name':
26 self
.frame
= Frame(master
, fcnf
)
27 self
.vbar
= Scrollbar(self
.frame
, vcnf
)
28 cnf
[Pack
] = {'side': 'left', 'fill': 'both', 'expand': 'yes'}
30 Listbox
.__init
__(self
, self
.frame
, cnf
)
31 self
['yscrollcommand'] = (self
.vbar
, 'set')
32 self
.vbar
['command'] = (self
, 'yview')
34 # Copy Pack methods of self.frame -- hack!
35 for m
in Pack
.__dict
__.keys():
36 if m
[0] != '_' and m
!= 'config':
37 setattr(self
, m
, getattr(self
.frame
, m
))