I am trying to use a progress bar for my application and used the following code by Michael Lange ( http://tkinter.unpythonic.net/wiki/ProgressMeter?action=PackagePages). However, the progress bar stops responding when I move it. I haven't modified class declaration and _demo but created my own modified function []:
class Meter(Tkinter.Frame): def __init__(self, master, width=300, height=20, bg='white', fillcolor='orchid1',\ value=0.0, text=None, font=None, textcolor='black', *args, **kw): Tkinter.Frame.__init__(self, master, bg=bg, width=width, height=height, *args, **kw) self._value = value self._canv = Tkinter.Canvas(self, bg=self['bg'], width=self['width'], height=self['height'],\ highlightthickness=0, relief='flat', bd=0) self._canv.pack(fill='both', expand=1) self._rect = self._canv.create_rectangle(0, 0, 0, self._canv.winfo_reqheight(), fill=fillcolor,\ width=0) self._text = self._canv.create_text(self._canv.winfo_reqwidth()/2, self._canv.winfo_reqheight()/2,\ text='', fill=textcolor) if font: self._canv.itemconfigure(self._text, font=font) self.set(value, text) self.bind('<Configure>', self._update_coords) def _update_coords(self, event): '''Updates the position of the text and rectangle inside the canvas when the size of the widget gets changed.''' # looks like we have to call update_idletasks() twice to make sure # to get the results we expect self._canv.update_idletasks() self._canv.coords(self._text, self._canv.winfo_width()/2, self._canv.winfo_height()/2) self._canv.coords(self._rect, 0, 0, self._canv.winfo_width()*self._value, self._canv.winfo_height()) self._canv.update_idletasks() def get(self): return self._value, self._canv.itemcget(self._text, 'text') def set(self, value=0.0, text=None): #make the value failsafe: if value < 0.0: value = 0.0 elif value > 1.0: value = 1.0 self._value = value if text == None: #if no text is specified use the default percentage string: text = str(int(round(100 * value))) + ' %' self._canv.coords(self._rect, 0, 0, self._canv.winfo_width()*value, self._canv.winfo_height()) self._canv.itemconfigure(self._text, text=text) self._canv.update_idletasks() def _demo(meter, value): meter.set(value) if value < 1.0: value = value + 0.005 meter.after(50, lambda: _demo(meter, value)) else: meter.set(value, 'TM completed - Please close this window') # this is where progress bar is loaded and where I have added my own stuff def test(): if __name__ == '__main__': root2 = Tkinter.Tk(className=' Text Mining Progress') m = Meter(root2, relief='ridge', bd=3) m.pack(fill='x') i=0.0 for fileid in reader.fileids(): m.set(i, 'Processing will take a few minutes...') i=i+1.000/len(reader.fileids()) # here I increment the colored bar in each iteration m.after(1000, lambda: _demo(m, i)) print str(fileid)[:-4],document_features(reader.raw(fileid))# I call some other processes here root2.withdraw() Thanks Tax
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor