File: LED_display.py

package info (click to toggle)
python-traitsui 6.1.3-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 11,252 kB
  • sloc: python: 44,765; makefile: 117
file content (124 lines) | stat: -rw-r--r-- 3,013 bytes parent folder | download
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#  Copyright (c) 2007, Enthought, Inc.
#  License: BSD Style.

"""
This demo illustrates use of the LEDEditor for displaying numeric values
using a simulated LED display control.
"""

from __future__ import absolute_import
from threading \
    import Thread

from time \
    import sleep

from traits.api \
    import HasTraits, Instance, Int, Bool, Float

from traitsui.api \
    import View, Item, HGroup, Handler, UIInfo, spring

from traitsui.wx.extra.led_editor \
    import LEDEditor

# Handler class for the LEDDemo class view:


class LEDDemoHandler(Handler):

    # The UIInfo object associated with the UI:
    info = Instance(UIInfo)

    # Is the demo currently running:
    running = Bool(True)

    # Is the thread still alive?
    alive = Bool(True)

    def init(self, info):
        self.info = info
        Thread(target=self._update_counter).start()

    def closed(self, info, is_ok):
        self.running = False
        while self.alive:
            sleep(.05)

    def _update_counter(self):
        while self.running:
            self.info.object.counter1 += 1
            self.info.object.counter2 += .001
            sleep(.01)
        self.alive = False

# The main demo class:


class LEDDemo(HasTraits):

    # A counter to display:
    counter1 = Int

    # A floating point value to display:
    counter2 = Float

    # The traits view:
    view = View(
        Item('counter1',
             label='Left aligned',
             editor=LEDEditor(alignment='left')
             ),
        Item('counter1',
             label='Center aligned',
             editor=LEDEditor(alignment='center')
             ),
        Item('counter1',
             label='Right aligned',
             editor=LEDEditor()  # default = 'right' aligned
             ),
        Item('counter2',
             label='Float value',
             editor=LEDEditor(format_str='%.3f')
             ),
        '_',
        HGroup(
            Item('counter1',
                 label='Left',
                 height=-40,
                 width=120,
                 editor=LEDEditor(alignment='left')
                 ),
            spring,
            Item('counter1',
                 label='Center',
                 height=-40,
                 width=120,
                 editor=LEDEditor(alignment='center')
                 ),
            spring,
            Item('counter1',
                 label='Right',
                 height=-40,
                 width=120,
                 editor=LEDEditor()  # default = 'right' aligned
                 ),
            spring,
            Item('counter2',
                 label='Float',
                 height=-40,
                 width=120,
                 editor=LEDEditor(format_str='%.3f')
                 )
        ),
        title='LED Editor Demo',
        buttons=['OK'],
        handler=LEDDemoHandler
    )

# Create the demo:
demo = LEDDemo()

# Run the demo (if invoked from the command line):
if __name__ == '__main__':
    demo.configure_traits()