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"