#2014-09-05 added setcolor #hint: use configure(entry_anchor='e') to display numbers to the right from PmwContribD.DisplayField import DisplayField as me import Pmw def colorPositiveAmountsToRed(v): if float(v) > 0: return 'red' #return ('entry_fg','red') else: return 'black' class DisplayField(me): def __init__(self, parent, **kw): optiondefs = ( ('setcolor', None, None), #Pmw.INITOPT), #removed 20200325 so it can be configured later too ) self.defineoptions(kw, optiondefs) me.__init__(self, parent, **kw) self.initialiseoptions() def setvalue(self, value ): w =self.component('entry') w.configure(text=value, fg='black') if self['setcolor'] and callable(self['setcolor']): w.configure( fg = self['setcolor'](value) ) def getvalue(self ): #2013-02-18 return self.component('entry').cget('text') class ModDisplayField(me): "display changed values in blue" def setvalue(self, value ): w =self.component('entry') old_value = w.cget('text') w.configure(text=value, fg='black') if old_value <> value: w.configure( fg = 'blue' ) else: w.configure(fg='black') def getvalue(self ): #2013-02-18 return self.component('entry').cget('text')