On Dec 19, 5:09 pm, Albert Hopkins <mar...@letterboxes.org> wrote: > On Fri, 2008-12-19 at 06:34 -0800, Alex wrote: > > Hi, > > > I have a Pyhon GUI application that launches subprocess. > > I would like to read the subprocess' stdout as it is being produced > > (show it in GUI), without hanging the GUI. > > > I guess threading will solve the no-hanging issue, but as far as I > > searched for now, I've only seen how to read the stdout after > > subprocess is finished. > > I believe that's going to be highly dependent upon the particular, yet > unspecified, GUI toolkit/API. > > There are probably a few ways. You're toolkit might native support for > this, but one way would be to use a timer. Here is some pseudocode: > > class MyWindow(toolkit.Window): > def __init__(self, ...): > ... > self.subprocess = subprocess.Popen(..., stdout=subprocess.PIPE) > self.running = True > > ... > toolkit.set_timeout(TIMEOUT_VAL, self.read_stdout) > > def read_stdout(self, ...): > if not self.running: > return > char = self.subprocess.stdout.read(1) > if char == '': > self.running = False > return > self.update_something(char) > toolkit.set_timeout(TIMEOUT_VAL, self.read_stdout)
Hi, Thanks a lot for the tip! Alex -- http://mail.python.org/mailman/listinfo/python-list