1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
"""
Enum editor
The Enum editor provides a simple way for the user to choose one item from
a list of known values (normally strings or numbers).
An Enum trait can take any value from a specified list of values. These values
are typically strings, integers, or floats, but can also be None or hashable
tuples.
An Enum can be displayed / edited in one of five styles:
* 'simple' displays a drop-down list of allowed values
* 'custom' by default, displays one or more columns of radio buttons (only
one of which is selected at a time).
* 'custom' in 'list' mode (see source code below), displays a list of all the
allowed values at once.
* 'readonly' displays the current value as non-editable text.
* 'text' displays the current value as text. You can also edit this text,
but your text must be in the list of allowed values.
"""
# Imports:
from traits.api import HasTraits, Enum
from traitsui.api import Item, Group, View, EnumEditor
class EnumEditorDemo ( HasTraits ):
""" Defines the main EnumEditor demo class. """
# Define an Enum trait to view.
name_list = Enum( 'A-495', 'A-498', 'R-1226', 'TS-17', 'TS-18',
'Foo', 12345, (11,7), None )
# Items are used to define the display, one Item per editor style:
enum_group = Group(
Item( 'name_list', style = 'simple', label = 'Simple' ),
Item( '_' ),
# The custom style defaults to radio button mode:
Item( 'name_list', style = 'custom', label = 'Custom radio' ),
Item( '_' ),
# The custom style can also display in list mode, with extra work:
Item( 'name_list', style = 'custom', label = 'Custom list',
editor= EnumEditor(values=name_list.values, mode='list') ),
Item( '_' ),
Item( 'name_list', style = 'readonly', label = 'ReadOnly' ),
Item( '_' ),
Item( 'name_list', style = 'text', label = 'Text' )
)
# Demo view:
traits_view = View(
enum_group,
title = 'EnumEditor',
buttons = ['OK'],
resizable = True
)
# Create the demo:
demo = EnumEditorDemo()
# Run the demo (if invoked from the command line):
if __name__ == '__main__':
demo.configure_traits()
|