a progress bar in tkinter ?

Robert Hicks rhicks at nospam.rma.edu
Mon Apr 17 11:08:46 EDT 2000


A Tkinter progress bar...and I did not create this nor have I used it.  I am
only sharing it. It comes from John Graysons book "Python and Tkinter
programming".

"""
A  basic widget for showing the progress
being made in a task.

"""

from Tkinter import *

class ProgressBar:
    def __init__(self, master=None, orientation="horizontal",
                 min=0, max=100, width=100, height=18,
                 doLabel=1, appearance="sunken",
   fillColor="blue", background="gray",
                 labelColor="yellow", labelFont="Verdana",
                 labelText="", labelFormat="%d%%",
                 value=50, bd=2):
 # preserve various values
 self.master=master
 self.orientation=orientation
 self.min=min
 self.max=max
 self.width=width
 self.height=height
 self.doLabel=doLabel
 self.fillColor=fillColor
        self.labelFont= labelFont
 self.labelColor=labelColor
 self.background=background
 self.labelText=labelText
 self.labelFormat=labelFormat
 self.value=value
 self.frame=Frame(master, relief=appearance, bd=bd)
 self.canvas=Canvas(self.frame, height=height, width=width, bd=0,
                           highlightthickness=0, background=background)
 self.scale=self.canvas.create_rectangle(0, 0, width, height,
      fill=fillColor)
 self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2,
        height / 2, text=labelText,
        anchor="c", fill=labelColor,
        font=self.labelFont)
 self.update()
 self.canvas.pack(side='top', fill='x', expand='no')

    def updateProgress(self, newValue, newMax=None):
        if newMax:
            self.max = newMax
        self.value = newValue
        self.update()

    def update(self):
 # Trim the values to be between min and max
 value=self.value
 if value > self.max:
     value = self.max
 if value < self.min:
     value = self.min
 # Adjust the rectangle
 if self.orientation == "horizontal":
     self.canvas.coords(self.scale, 0, 0,
       float(value) / self.max * self.width, self.height)
 else:
     self.canvas.coords(self.scale, 0,
                     self.height - (float(value) / self.max*self.height),
       self.width, self.height)
 # Now update the colors
 self.canvas.itemconfig(self.scale, fill=self.fillColor)
 self.canvas.itemconfig(self.label, fill=self.labelColor)
 # And update the label
 if self.doLabel:
            if value:
                if value >= 0:
                    pvalue = int((float(value) / float(self.max)) * 100.0)
                else:
                    pvalue = 0
                self.canvas.itemconfig(self.label, text=self.labelFormat %
pvalue)
            else:
                self.canvas.itemconfig(self.label, text='')
 else:
     self.canvas.itemconfig(self.label, text=self.labelFormat %
self.labelText)
 self.canvas.update_idletasks()


Hope this helps!

Bob

"Ralf Claus" <ralf.claus at teleatlas.com> wrote in message
news:38FAD6CA.6198CF2A at teleatlas.com...
> Hello,
> i search about a "widget", that works like a ProgressBar in VB.
> Is there a possibility given by Tkinter?
>
> thanks
>
> Ralf





More information about the Python-list mailing list