Changeset 143
- Timestamp:
- 04/19/08 19:49:33 (3 months ago)
- Files:
-
- sucrose/trunk/python/keypad_tk.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sucrose/trunk/python/keypad_tk.py
r142 r143 130 130 # { BEGIN statistics GUI 131 131 for row, (name, func) in enumerate(self.ROWS): 132 Tkinter.Label(self, text=name + ' ', anchor=Tkinter.W,132 Tkinter.Label(self, text=name + ' ', anchor=Tkinter.W, 133 133 font=("helvetica", 24, 'bold'), bg='white').grid( 134 134 row=row, column=0, columnspan=2, sticky=Tkinter.EW) … … 146 146 Tkinter.Label(self, text='', font=('helvetica', 24, 'bold')).grid( 147 147 row=row+1, column=0, columnspan=2, sticky=Tkinter.NSEW) 148 Tkinter.Label(self, text='Recent Purchases', font=('helvetica', 13, 'bold')\ 149 ).grid(row=row+2, column=0, columnspan=2, sticky=Tkinter.NSEW) 148 Tkinter.Label(self, text='Recent Purchases', justify=Tkinter.LEFT, 149 font=('helvetica', 13, 'bold') 150 ).grid(row=row+2, column=0, columnspan=3, sticky=Tkinter.W) 150 151 151 152 offset = row + 3 … … 164 165 165 166 class Nutrition(Tkinter.Frame): 166 ROWS = (('Caffeine', 'caffeine' ),167 ('Calories', 'calories' ),168 ('Sugar', 'sugar' ),169 ('Carbohydrates', 'carbohydrates' ),170 ('Fiber', 'fiber' ),171 ('Sodium', 'sodium' ),172 ('Fat', 'fat' ),173 ('Saturated Fat', 'saturated_fat' ),174 ('Protein', 'protein' ),175 ('Cholesterol', 'cholesterol' ))167 ROWS = (('Caffeine', 'caffeine', 'mg'), 168 ('Calories', 'calories', ''), 169 ('Sugar', 'sugar', 'g'), 170 ('Carbohydrates', 'carbohydrates', 'g'), 171 ('Fiber', 'fiber', 'g'), 172 ('Sodium', 'sodium', 'mg'), 173 ('Fat', 'fat', 'g'), 174 ('Saturated Fat', 'saturated_fat', 'g'), 175 ('Protein', 'protein', 'g'), 176 ('Cholesterol', 'cholesterol', 'mg')) 176 177 177 178 def update(self, tray): 178 179 if tray: 179 180 item = self.sucrose.item_from_tray(tray) 180 for name, attr in self.ROWS: 181 label = getattr(self, attr) 182 label.config(text=tray and getattr(item, attr, '') or '') 181 for name, attr, unit in self.ROWS: 182 (val_label, unit_label) = getattr(self, attr) 183 val = tray and getattr(item, attr, '') or '' 184 val_label.config(text=val) 185 unit_label.config(text=val and unit or '') 183 186 184 187 def __init__(self, sucrose, auth, update_f, exit=None, location=None, master=None, cnf={}, **kw): … … 197 200 font=('helvetica', 24), bg='white', fg='white').grid( 198 201 row=0, column=1, sticky=Tkinter.EW) 199 200 for row, (name, attr) in enumerate(self.ROWS): 201 Tkinter.Label(self, text=name + ' ', anchor=Tkinter.W, 202 Tkinter.Label(self, text='mg', anchor=Tkinter.W, 203 font=('helvetica', 24), bg='white', fg='white').grid( 204 row=0, column=2, sticky=Tkinter.EW) 205 206 for row, (name, attr, unit) in enumerate(self.ROWS): 207 Tkinter.Label(self, text=name + ' ', anchor=Tkinter.W, 202 208 font=("helvetica", 24), bg='white').grid( 203 209 row=row + 1, column=0, sticky=Tkinter.EW) … … 206 212 font=("helvetica", 24), bg='white') 207 213 val_label.grid(row=row + 1, column=1, sticky=Tkinter.EW) 208 209 setattr(self, attr, val_label) 214 unit_label = \ 215 Tkinter.Label(self, text='', anchor=Tkinter.W, 216 font=("helvetica", 24), bg='white') 217 unit_label.grid(row=row + 1, column=2, sticky=Tkinter.EW) 218 219 setattr(self, attr, (val_label, unit_label)) 210 220 211 221 class Keypad(Tkinter.Frame): … … 225 235 self.price.config(text='$%.2f' % self.tray.cur_price) 226 236 227 self.auth.authenticate_purchase(self.item_location) 228 237 try: 238 self.auth.authenticate_purchase(self.item_location) 239 except ValueError, e: 240 self.report_exception(e) 241 self.vend.config(state=Tkinter.DISABLED) 242 return 229 243 self.vend.config(state=Tkinter.NORMAL) 230 244 … … 234 248 def make_button_callback(self,number): 235 249 return lambda: self.button_callback(number) 250 251 def report_exception(self, e): 252 self.location.config(text=self.item_location) 253 self.name.config(text=str(e), fg='red') 254 self.price.config(text='') 236 255 237 256 def button_callback(self,number): … … 243 262 244 263 except ValueError, e: 245 self.location.config(text=self.item_location) 246 self.name.config(text=str(e), fg='red') 247 self.price.config(text='') 264 self.report_exception(e) 248 265 tray = None 249 266 except Exception, e: 250 267 import traceback; traceback.print_exc() 251 self.location.config(text=self.item_location) 252 self.name.config(text=str(e), fg='red') 253 self.price.config(text='') 268 self.report_exception(e) 254 269 tray = None 255 270
