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