Mercurial > code > home > repos > light9
comparison Widgets/FlyingFader.py @ 11:c65119b66b00
- no more kw args -- they didn't do anything. use configure to change
- no more kw args -- they didn't do anything. use configure to change
things instead.
- colortrough on the way to a more generic color fader, now called
colorfade
- get/set methods make FlyingFader seem more like a Scale
author | dmcc |
---|---|
date | Sun, 07 Jul 2002 06:01:57 +0000 |
parents | 342f7d1c7561 |
children | c76b62eccdec |
comparison
equal
deleted
inserted
replaced
10:533ac835083f | 11:c65119b66b00 |
---|---|
1 from Tkinter import * | 1 from Tkinter import * |
2 from time import time | 2 from time import time |
3 | 3 |
4 class FlyingFader(Frame): | 4 class FlyingFader(Frame): |
5 def __init__(self, master, variable, label, time=1.5, font=('Arial', 8), | 5 def __init__(self, master, variable, label, time=1.5, font=('Arial', 8)): |
6 **kw): | |
7 Frame.__init__(self, master) | 6 Frame.__init__(self, master) |
8 self.name = label | 7 self.name = label |
9 self.variable = variable | 8 self.variable = variable |
10 self.fadelength = time | 9 self.fadelength = time |
11 self.curfade = None | 10 self.curfade = None |
29 | 28 |
30 self.scale.bind("<Key-0>", lambda evt: self.newfade(100, evt)) | 29 self.scale.bind("<Key-0>", lambda evt: self.newfade(100, evt)) |
31 self.scale.bind("<grave>", lambda evt: self.newfade(0, evt)) | 30 self.scale.bind("<grave>", lambda evt: self.newfade(0, evt)) |
32 | 31 |
33 self.scale.bind("<1>", self.cancelfade) | 32 self.scale.bind("<1>", self.cancelfade) |
33 self.scale.bind("<2>", self.cancelfade) | |
34 self.scale.bind("<3>", self.mousefade) | 34 self.scale.bind("<3>", self.mousefade) |
35 | 35 |
36 self.variable.trace('w', self.updatelabel) | 36 self.variable.trace('w', self.updatelabel) |
37 | 37 |
38 def cancelfade(self, evt): | 38 def cancelfade(self, evt): |
71 self.scale['troughcolor'] = self.oldtrough | 71 self.scale['troughcolor'] = self.oldtrough |
72 return | 72 return |
73 percent = (now - start) / (end - start) | 73 percent = (now - start) / (end - start) |
74 newvalue = (percent * (lend - lstart)) + lstart | 74 newvalue = (percent * (lend - lstart)) + lstart |
75 self.variable.set(newvalue) | 75 self.variable.set(newvalue) |
76 colortrough(self.scale, percent) | 76 colorfade(self.scale, percent) |
77 self.after(10, self.gofade) | 77 self.after(10, self.gofade) |
78 | 78 |
79 def updatelabel(self, *args): | 79 def updatelabel(self, *args): |
80 self.vlabel['text'] = "%.1f" % self.variable.get() | 80 self.vlabel['text'] = "%.1f" % self.variable.get() |
81 if self.fadetimes[1] == 0: # no fade | 81 if self.fadetimes[1] == 0: # no fade |
83 elif self.curfade[1] > self.curfade[0]: | 83 elif self.curfade[1] > self.curfade[0]: |
84 self.vlabel['fg'] = 'red' | 84 self.vlabel['fg'] = 'red' |
85 else: | 85 else: |
86 self.vlabel['fg'] = 'blue' | 86 self.vlabel['fg'] = 'blue' |
87 | 87 |
88 def get(self): | |
89 return self.scale.get() | |
88 | 90 |
89 def colortrough(scale, lev): | 91 def set(self, val): |
92 self.scale.set(val) | |
93 | |
94 | |
95 def colorfade(scale, lev): | |
90 low = (255, 255, 255) | 96 low = (255, 255, 255) |
91 high = (0, 0, 0) | 97 high = (0, 0, 0) |
92 out = [int(l+lev*(h-l)) for h,l in zip(high,low)] | 98 out = [int(l+lev*(h-l)) for h, l in zip(high,low)] |
93 col="#%02X%02X%02X" % tuple(out) | 99 col="#%02X%02X%02X" % tuple(out) |
94 scale.config(troughcolor=col) | 100 scale.config(troughcolor=col) |
95 | 101 |
96 if __name__ == '__main__': | 102 if __name__ == '__main__': |
97 root = Tk() | 103 root = Tk() |