diff options
author | Guido van Rossum <guido@python.org> | 1990-10-25 18:51:42 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1990-10-25 18:51:42 (GMT) |
commit | e1f069ec9831c263ddbf6fd5b997a115212f9262 (patch) | |
tree | 81a4f93ee6d5483c5002767136dcd2c84ed2875f /Lib/stdwin/Histogram.py | |
parent | 4de12876a9b41fa0c701f91191d1a588b69fcaf9 (diff) | |
download | cpython-e1f069ec9831c263ddbf6fd5b997a115212f9262.zip cpython-e1f069ec9831c263ddbf6fd5b997a115212f9262.tar.gz cpython-e1f069ec9831c263ddbf6fd5b997a115212f9262.tar.bz2 |
Initial revision
Diffstat (limited to 'Lib/stdwin/Histogram.py')
-rwxr-xr-x | Lib/stdwin/Histogram.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Lib/stdwin/Histogram.py b/Lib/stdwin/Histogram.py new file mode 100755 index 0000000..a023938 --- /dev/null +++ b/Lib/stdwin/Histogram.py @@ -0,0 +1,49 @@ +# Module 'Histogram' + +from Buttons import * + + +# A Histogram displays a histogram of numeric data. +# It reacts to resize events by resizing itself, +# leaving the same amount of space around the borders. +# +class HistogramAppearance() = LabelAppearance(): + # + def define(self, (win, bounds, ydata, scale)): + self.init_appearance(win, bounds) + self.ydata = ydata + self.scale = scale # (min, max) + self.left_top, (right, bottom) = bounds + width, height = win.getwinsize() + self.right_margin = width - right + self.bottom_margin = height - bottom + return self + # + def setdata(self, (ydata, scale)): + self.ydata = ydata + self.scale = scale # (min, max) + self.win.change(self.bounds) + # + def drawit(self, d): + ydata = self.ydata + (left, top), (right, bottom) = self.bounds + min, max = self.scale + size = max-min + width, height = right-left, bottom-top + for i in range(len(ydata)): + h0 = left + i * width/len(ydata) + h1 = left + (i+1) * width/len(ydata) + v0 = top + height - (self.ydata[i]-min)*height/size + v1 = top + height + d.paint((h0, v0), (h1, v1)) + # + def resize(self): + width, height = self.win.getwinsize() + right = width - self.right_margin + bottom = height - self.bottom_margin + self.setbounds(self.left_top, (right, bottom)) + # + +class HistogramReactivity() = NoReactivity(): pass + +class Histogram() = HistogramAppearance(), HistogramReactivity(): pass |