title
= 'Pmw.ScrolledListBox demonstration'
# Import Pmw from this directory tree.
sys
.path
[:0] = ['../../..']
def __init__(self
, parent
):
# Create the ScrolledListBox.
self
.box
= Pmw
.ScrolledListBox(parent
,
items
=('Sydney', 'Melbourne', 'Brisbane'),
selectioncommand
=self
.selectionCommand
,
dblclickcommand
=self
.defCmd
,
# Create a group widget to contain the scrollmode options.
w
= Pmw
.Group(parent
, tag_text
='Scroll mode')
w
.pack(side
= 'bottom', padx
= 5, pady
= 5)
hmode
= Pmw
.OptionMenu(w
.interior(),
label_text
= 'Horizontal:',
items
= ['none', 'static', 'dynamic'],
command
= self
.sethscrollmode
,
hmode
.pack(side
= 'top', padx
= 5, pady
= 5)
vmode
= Pmw
.OptionMenu(w
.interior(),
label_text
= 'Vertical:',
items
= ['none', 'static', 'dynamic'],
command
= self
.setvscrollmode
,
vmode
.pack(side
= 'top', padx
= 5, pady
= 5)
buttonBox
= Pmw
.ButtonBox(parent
)
buttonBox
.pack(side
= 'bottom')
buttonBox
.add('yview', text
= 'Show\nyview', command
= self
.showYView
)
buttonBox
.add('scroll', text
= 'Page\ndown', command
= self
.pageDown
)
buttonBox
.add('center', text
= 'Center', command
= self
.centerPage
)
# Pack this last so that the buttons do not get shrunk when
self
.box
.pack(fill
= 'both', expand
= 1, padx
= 5, pady
= 5)
# Do this after packing the scrolled list box, so that the
# window does not resize as soon as it appears (because
# alignlabels has to do an update_idletasks).
Pmw
.alignlabels((hmode
, vmode
))
# Add some more entries to the listbox.
items
= ('Andamooka', 'Coober Pedy', 'Innamincka', 'Oodnadatta')
self
.box
.insert(2, 'Wagga Wagga', 'Perth', 'London')
self
.box
.insert('end', 'Darwin', 'Auckland', 'New York')
index
= list(self
.box
.get(0, 'end')).index('London')
self
.box
.insert('end', 'Bulli', 'Alice Springs', 'Woy Woy')
self
.box
.insert('end', 'Wallumburrawang', 'Willandra Billabong')
def sethscrollmode(self
, tag
):
self
.box
.configure(hscrollmode
= tag
)
def setvscrollmode(self
, tag
):
self
.box
.configure(vscrollmode
= tag
)
def selectionCommand(self
):
sels
= self
.box
.getcurselection()
print 'Selection:', sels
[0]
sels
= self
.box
.getcurselection()
print 'No selection for double click'
print 'Double click:', sels
[0]
self
.box
.yview('scroll', 1, 'page')
top
, bottom
= self
.box
.yview()
self
.box
.yview('moveto', middle
)
######################################################################
# Create demo in root window for testing.
if __name__
== '__main__':
exitButton
= Tkinter
.Button(root
, text
= 'Exit', command
= root
.destroy
)
exitButton
.pack(side
= 'bottom')