Mercurial > code > home > repos > light9
comparison light8/uihelpers.py @ 30:e9d2e7754fd9
sideways subs, new x/y buttons (which don't draw right, but they work)
author | drewp |
---|---|
date | Sun, 07 Jul 2002 10:48:38 +0000 |
parents | 219d6fcbc28d |
children | 411de8b46aef |
comparison
equal
deleted
inserted
replaced
29:f595fdd4c548 | 30:e9d2e7754fd9 |
---|---|
37 low=(80,80,180) | 37 low=(80,80,180) |
38 high=(255,55,050) | 38 high=(255,55,050) |
39 out = [int(l+lev*(h-l)) for h,l in zip(high,low)] | 39 out = [int(l+lev*(h-l)) for h,l in zip(high,low)] |
40 col="#%02X%02X%02X" % tuple(out) | 40 col="#%02X%02X%02X" % tuple(out) |
41 label.config(bg=col) | 41 label.config(bg=col) |
42 | |
43 class Togglebutton(Button): | |
44 """works like a single radiobutton, but it's a button so the label's on the button face, not to the side""" | |
45 def __init__(self,parent,**kw): | |
46 if kw['variable']: | |
47 self.variable = kw['variable'] | |
48 self.variable.trace('w',self.varchanged) | |
49 del kw['variable'] | |
50 else: | |
51 self.variable=None | |
52 self.oldcommand = kw.get('command',None) | |
53 kw['command'] = self.invoke | |
54 Button.__init__(self,parent,**kw) | |
55 | |
56 self.origbkg = self.cget('bg') | |
57 | |
58 self.state=0 | |
59 if self.variable: | |
60 self.state = self.variable.get() | |
61 | |
62 self.setstate(self.state) | |
63 | |
64 self.bind("<Enter>",lambda ev: self.setstate) | |
65 self.bind("<Leave>",lambda ev: self.setstate) | |
66 | |
67 def varchanged(self,*args): | |
68 self.setstate(self.variable.get()) | |
69 | |
70 def invoke(self): | |
71 self.setstate(not self.state) | |
72 | |
73 if self.oldcommand: | |
74 self.oldcommand() | |
75 | |
76 def setstate(self,newstate): | |
77 self.variable.set(newstate) | |
78 if newstate: # set | |
79 self.tk.call('tkButtonDown',self) | |
80 self.config(bg='green') | |
81 else: # unset | |
82 self.tk.call('tkButtonUp',self) | |
83 self.config(bg=self.origbkg) | |
84 return "break" |