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