a1f2f9923baab7357fb39355e3c2cd5c9fa2a6e6
title
= 'Using Tk option database to configure Pmw megawidgets'
# Import Pmw from this directory tree.
sys
.path
[:0] = ['../../..']
def __init__(self
, parent
):
header
= Tkinter
.Label(parent
, text
= 'Select some Tk option ' +
'database values from\nthe lists, then click ' +
'\'Create dialog\' to create\na MessageDialog with ' +
'these values as defaults.')
header
.pack(padx
= 10, pady
= 10)
# Create and pack the ComboBoxes to select options.
"('OK', 'Apply', 'Cancel', 'Help')",
if Tkinter
.TkVersion
>= 8.4:
disabledState
= 'readonly'
disabledState
= 'disabled'
self
._buttons
= Pmw
.ComboBox(parent
, label_text
= 'buttons:',
entry_state
= disabledState
,
scrolledlist_items
= buttons
)
self
._buttons
.pack(fill
= 'x', expand
= 1, padx
= 8, pady
= 8)
self
._buttons
.selectitem(3)
buttonboxpos
= ('n', 's', 'e', 'w',)
self
._buttonboxpos
= Pmw
.ComboBox(parent
, label_text
= 'buttonboxpos:',
entry_state
= disabledState
,
scrolledlist_items
= buttonboxpos
)
self
._buttonboxpos
.pack(fill
= 'x', expand
= 1, padx
= 8, pady
= 8)
self
._buttonboxpos
.selectitem(2)
pad
= ('0', '8', '20', '50',)
self
._pad
= Pmw
.ComboBox(parent
, label_text
= 'padx, pady:',
entry_state
= disabledState
,
scrolledlist_items
= pad
)
self
._pad
.pack(fill
= 'x', expand
= 1, padx
= 8, pady
= 8)
Pmw
.alignlabels((self
._buttons
, self
._buttonboxpos
, self
._pad
))
# Create button to launch the dialog.
w
= Tkinter
.Button(parent
, text
= 'Create dialog',
command
= self
._createDialog
)
w
.pack(padx
= 8, pady
= 8)
# Set the option database.
buttons
= self
._buttons
.get()
buttonboxpos
= self
._buttonboxpos
.get()
self
.parent
.option_add('*MessageDialog.buttons', buttons
)
self
.parent
.option_add('*MessageDialog.buttonboxpos', buttonboxpos
)
self
.parent
.option_add('*ButtonBox.padx', pad
)
self
.parent
.option_add('*ButtonBox.pady', pad
)
if self
.dialog
is not None:
text
= ('This dialog was created by setting the Tk ' +
'option database:\n\n *MessageDialog.buttons: ' + buttons
+
'\n *MessageDialog.buttonboxpos: ' + buttonboxpos
+
'\n *ButtonBox.padx: ' + pad
+
'\n *ButtonBox.pady: ' + pad
)
self
.dialog
= Pmw
.MessageDialog(self
.parent
,
title
= 'Pmw option database demonstration',
message_justify
= 'left',
self
.dialog
.iconname('Test dialog')
# Return the defaults to normal, otherwise all other demos
self
.parent
.option_add('*MessageDialog.buttons', "('OK',)")
self
.parent
.option_add('*MessageDialog.buttonboxpos', 's')
self
.parent
.option_add('*ButtonBox.padx', 8)
self
.parent
.option_add('*ButtonBox.pady', 8)
######################################################################
# Create demo in root window for testing.
if __name__
== '__main__':
Pmw
.initialise(root
, useTkOptionDb
= 1)
exitButton
= Tkinter
.Button(root
, text
= 'Exit', command
= root
.destroy
)
exitButton
.pack(side
= 'bottom')