title
= 'Pmw.ScrolledFrame demonstration'
# Import Pmw from this directory tree.
sys
.path
[:0] = ['../../..']
def __init__(self
, parent
):
# Create the ScrolledFrame.
self
.sf
= Pmw
.ScrolledFrame(parent
,
labelpos
= 'n', label_text
= 'ScrolledFrame',
# Create a group widget to contain the flex options.
w
= Pmw
.Group(parent
, tag_text
='Flex')
w
.pack(side
= 'bottom', padx
= 5, pady
= 3)
hflex
= Pmw
.OptionMenu(w
.interior(),
label_text
= 'Horizontal:',
items
= ['fixed', 'expand', 'shrink', 'elastic'],
hflex
.pack(side
= 'left', padx
= 5, pady
= 3)
vflex
= Pmw
.OptionMenu(w
.interior(),
label_text
= 'Vertical:',
items
= ['fixed', 'expand', 'shrink', 'elastic'],
vflex
.pack(side
= 'left', padx
= 5, pady
= 3)
# Create a group widget to contain the scrollmode options.
w
= Pmw
.Group(parent
, tag_text
='Scroll mode')
w
.pack(side
= 'bottom', padx
= 5, pady
= 0)
hmode
= Pmw
.OptionMenu(w
.interior(),
label_text
= 'Horizontal:',
items
= ['none', 'static', 'dynamic'],
command
= self
.sethscrollmode
,
hmode
.pack(side
= 'left', padx
= 5, pady
= 3)
vmode
= Pmw
.OptionMenu(w
.interior(),
label_text
= 'Vertical:',
items
= ['none', 'static', 'dynamic'],
command
= self
.setvscrollmode
,
vmode
.pack(side
= 'left', padx
= 5, pady
= 3)
self
.radio
= Pmw
.RadioSelect(parent
, selectmode
= 'multiple',
command
= self
.radioSelected
)
self
.radio
.add('center', text
= 'Keep centered vertically')
self
.radio
.pack(side
= 'bottom')
buttonBox
= Pmw
.ButtonBox(parent
)
buttonBox
.pack(side
= 'bottom')
buttonBox
.add('add', text
= 'Add a button', command
= self
.addButton
)
buttonBox
.add('yview', text
= 'Show yview', command
= self
.showYView
)
buttonBox
.add('scroll', text
= 'Page down', command
= self
.pageDown
)
# Pack this last so that the buttons do not get shrunk when
self
.sf
.pack(padx
= 5, pady
= 3, fill
= 'both', expand
= 1)
self
.frame
= self
.sf
.interior()
def sethscrollmode(self
, tag
):
self
.sf
.configure(hscrollmode
= tag
)
def setvscrollmode(self
, tag
):
self
.sf
.configure(vscrollmode
= tag
)
self
.sf
.configure(horizflex
= tag
)
self
.sf
.configure(vertflex
= tag
)
button
= Tkinter
.Button(self
.frame
,
text
= '(%d,%d)' % (self
.col
, self
.row
))
button
.grid(row
= self
.row
, column
= self
.col
, sticky
= 'nsew')
self
.frame
.grid_rowconfigure(self
.row
, weight
= 1)
self
.frame
.grid_columnconfigure(self
.col
, weight
= 1)
if self
.sf
.cget('horizflex') == 'expand' or \
self
.sf
.cget('vertflex') == 'expand':
if 'center' in self
.radio
.getcurselection():
self
.sf
.update_idletasks()
self
.sf
.yview('scroll', 1, 'page')
def radioSelected(self
, name
, state
):
# Example of how to use the yview() method of Pmw.ScrolledFrame.
top
, bottom
= self
.sf
.yview()
self
.sf
.yview('moveto', middle
)
######################################################################
# Create demo in root window for testing.
if __name__
== '__main__':
Pmw
.initialise(root
, size
= size
, fontScheme
= 'pmw2')
exitButton
= Tkinter
.Button(root
, text
= 'Exit', command
= root
.destroy
)
exitButton
.pack(side
= 'bottom')