1 from Tkinter import *
2
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
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
40 if newMax:
41 self.max = newMax
42 self.value = newValue
43 self.update()
44
46
47 value=self.value
48 if value > self.max:
49 value = self.max
50 if value < self.min:
51 value = self.min
52
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
62 self.canvas.itemconfig(self.scale, fill=self.fillColor)
63 self.canvas.itemconfig(self.label, fill=self.labelColor)
64
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