Welcome, guest | Sign In | My Account | Store | Cart

Progress bars are popular when trying to show how much of a job has been completed. In my case, it was encrypting and decrypting files. A GUI interface was written, but something was lacking. How was the user of the program supposed to know if the program was doing its job? A progress bar seemed like a good answer, so a simple GUI progress bar was written using Tkinter.

Python, 36 lines
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import Tkinter

class PB:
    
    def settitle(self, title):
        self.__root.title(title)
        
        
    # Create Progress Bar
    def __init__(self, width, height):
        #self.__root = Tkinter.Toplevel()
        self.__root = Tkinter.Tk() #updated by Petr
        self.__root.resizable(False, False)
        self.__root.title('Wait please...')
        self.__canvas = Tkinter.Canvas(self.__root, width=width, height=height)
        self.__canvas.grid()
        self.__width = width
        self.__height = height

    # Open Progress Bar
    def open(self):
        self.__root.deiconify()
        self.__root.focus_set()
        #self.__root.update()

    # Close Progress Bar
    def close(self):
        self.__root.withdraw()

    # Update Progress Bar
    def update(self, ratio):
        self.__canvas.delete(Tkinter.ALL)
        self.__canvas.create_rectangle(0, 0, self.__width * ratio, \
                                       self.__height, fill='blue')
        self.__root.update()
        self.__root.focus_set()

You will need to catch errors when working with this class. The window can still be closed.