On Sun, Dec 02, 2007 at 09:34:40PM -0800, Aravind Vijayakumar wrote:
> Since you are opening the file afresh each time in refreshLog, won't
> you be reading the first line each time? 

The .read() method in Python reads the whole file, not just the first
line.

> You probably want a
> persistent open stream from which you can keep reading. Also, have a
> look at gobject.io_add_watch, it is probably simpler than threading
> for your needs.

Unix does not support watching for io for on-disk files (at least not
in the normal ways); io_add_watch only works for things like pipes and
sockets.

However, Mark: I don't know the answer to your problem, but the use of
threading does look very questionable here.  GTK+ is not designed to
be used in a heavily-multithreaded environment; it has some minimal
hooks, but basically assumes that you will do all of your interaction
with GTK+ from a single thread.

> >         timer = threading.Timer(10, self.refreshLog)

Instead of this, try
  gobject.timeout_add(10 * 1000, self.refreshLog)
to request that the GTK+ main-loop call your function every 10 seconds
(= 10,000 milliseconds).  It will keep calling your function until it
returns False rather than True (and note that if you don't return
anything, then Python automatically returns None, which is considered
false).  So also add a 'return True' to the end of your refreshLog
function.  Don't know if this will help, but it might.

-- Nathaniel

-- 
Damn the Solar System.  Bad light; planets too distant; pestered with
comets; feeble contrivance; could make a better one myself.
  -- Lord Jeffrey
_______________________________________________
pygtk mailing list   pygtk@daa.com.au
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to