From dd250cc40e4c4c93aa22c5afe6e8b16bc81ffc66 Mon Sep 17 00:00:00 2001 From: Peter Hinch Date: Fri, 9 Jul 2021 14:18:21 +0100 Subject: [PATCH] Add Tstat image. --- README.md | 13 +++++++++++-- images/tstat.JPG | Bin 0 -> 23715 bytes 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 images/tstat.JPG diff --git a/README.md b/README.md index d1a87a9..3ce56af 100644 --- a/README.md +++ b/README.md @@ -1448,8 +1448,17 @@ and below the `Meter` to display the top and bottom legends. ## 16.1 Tstat widget -This subclass of `Meter` is also a `passive` widget but provides for callbacks -which run in response to specific changes in the object's value. +```python +from gui.widgets.tstat import Tstat +``` +![Image](./images/tstat.JPG) +This example has two data sensitive regions, a control region with hysteresis +and an alarm region. + +The `Tstat` subclass of `Meter` is a `passive` widget with callbacks which run +in response to specific changes in the object's value. Notionally based on a +thermostat, it can implement objects with a variety of data-dependent behaviour +including alarms and controls having hysteresis. The class supports one or more `Region` instances. Visually these appear as colored bands on the scale. If the meter's value enters, leaves or crosses one diff --git a/images/tstat.JPG b/images/tstat.JPG new file mode 100644 index 0000000000000000000000000000000000000000..c8580ca5d853c0ee08a64b1fb64d8e6d1e7bd1d0 GIT binary patch literal 23715 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 k^B{u36UAkKDh*^h-47+<1#HW_DTpV(GD|s)