Package SimPy :: Module tkprogressbar
[hide private]
[frames] | no frames]

Source Code for Module SimPy.tkprogressbar

 1  from Tkinter import * 
 2   
3 -class ProgressBar:
4 - def __init__(self, master=None, orientation="horizontal", 5 min=0, max=100, width=100, height=18, 6 doLabel=1, appearance="sunken", 7 fillColor="blue", background="gray", 8 labelColor="yellow", labelFont="Verdana", 9 labelText="", labelFormat="%d%%", 10 value=50, bd=2):
11 # preserve various values 12 self.master=master 13 self.orientation=orientation 14 self.min=min 15 self.max=max 16 self.width=width 17 self.height=height 18 self.doLabel=doLabel 19 self.fillColor=fillColor 20 self.labelFont= labelFont 21 self.labelColor=labelColor 22 self.background=background 23 self.labelText=labelText 24 self.labelFormat=labelFormat 25 self.value=value 26 self.frame=Frame(master, relief=appearance, bd=bd) 27 self.canvas=Canvas(self.frame, height=height, width=width, bd=0, 28 highlightthickness=0, background=background) 29 self.scale=self.canvas.create_rectangle(0, 0, width, height, 30 fill=fillColor) 31 self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() 32 / 2, 33 height / 2, text=labelText, 34 anchor="c", fill=labelColor, 35 font=self.labelFont) 36 self.update() 37 self.canvas.pack(side='top', fill='x', expand='no')
38
39 - def updateProgress(self, newValue, newMax=None):
40 if newMax: 41 self.max = newMax 42 self.value = newValue 43 self.update()
44
45 - def update(self):
46 # Trim the values to be between min and max 47 value=self.value 48 if value > self.max: 49 value = self.max 50 if value < self.min: 51 value = self.min 52 # Adjust the rectangle 53 if self.orientation == "horizontal": 54 self.canvas.coords(self.scale, 0, 0, 55 float(value) / self.max * self.width, self.height) 56 else: 57 self.canvas.coords(self.scale, 0, 58 self.height - (float(value) / 59 self.max*self.height), 60 self.width, self.height) 61 # Now update the colors 62 self.canvas.itemconfig(self.scale, fill=self.fillColor) 63 self.canvas.itemconfig(self.label, fill=self.labelColor) 64 # And update the label 65 if self.doLabel: 66 if value: 67 if value >= 0: 68 pvalue = int((float(value) / float(self.max)) * 69 100.0) 70 else: 71 pvalue = 0 72 self.canvas.itemconfig(self.label, text=self.labelFormat 73 % pvalue) 74 else: 75 self.canvas.itemconfig(self.label, text='') 76 else: 77 self.canvas.itemconfig(self.label, text=self.labelFormat % 78 self.labelText) 79 self.canvas.update_idletasks()
80