IOstreams/pipes, newbie question, capturing console info form another script?

G. Willoughby sab at freeuk.com
Sat Mar 23 13:11:06 EST 2002


this is what i am using:
[snip]
class RenderBox:
 def __init__(self, renderMaster="aboutRoot", title="Rendering..."):
  self.renderMaster=renderMaster
  self.renderMaster=Toplevel()
  self.renderMaster.withdraw()
  self.renderMaster.title("DAoC MapperGUI")
  self.renderMaster.resizable(0, 0)
  self.renderMaster.protocol('WM_DELETE_WINDOW', lambda:0)
  frame0=Frame(self.renderMaster)
  frame0.grid(row=0, column=0, padx=10, pady=10)
  Label(frame0, text=title, justify=LEFT, anchor=W, font=("Arial", 12,
"")).grid(row=0, column=0, sticky=W)
  self.text=StringVar()
  self.textLabel=Label(frame0, textvariable=self.text, width=35, height=8,
justify=LEFT, anchor=N+W)
  self.textLabel.grid(row=1, column=0, sticky=W)
  self.renderMaster.update_idletasks()
  self.renderMaster.geometry("%sx%s+%s+%s" %
(self.renderMaster.winfo_width(), self.renderMaster.winfo_height(),
(self.renderMaster.winfo_screenwidth()/2)-(self.renderMaster.winfo_width()/2
),
(self.renderMaster.winfo_screenheight()/2)-(self.renderMaster.winfo_height()
/2)))
  self.renderMaster.deiconify()
  self.renderMaster.focus_set()
  self.update()

 def updateText(self):
  self.text=app.mapperScript.read()
  self.update()

 def update(self):
  self.renderMaster.after(100, self.updateText)

 def destroy(self):
  self.renderMaster.destroy()
[/snip]
[snip]
self.progressBox=RenderBox()
self.mapperScript=os.popen("python mapper.py -settings mappergui.ini -scale
%s -out latest_render.jpg -zone %s" % (self.imageSize, self.currentZone))
[/snip]

but it doesn't work! i start the script off and the RenderBox pops up but
everything freezes until the 'mapper.py' script finishes! any ideas???

"Chris Liechti" <cliechti at gmx.net> wrote in message
news:Xns91DAB26BB55B5cliechtigmxnet at 62.2.16.82...
> "G. Willoughby" <sab at NOSPAM.freeuk.com> wrote in
> news:a7i9kq$ujm$1 at news7.svr.pol.co.uk:
> ...
> >  os.system("python mapper.py -settings mappergui.ini -scale %s -out
> > latest_render.jpg -zone %s" % (self.imageSize, self.currentZone))
> >  [/snip]
> >  now i was wondering because this 'mapper.py' script and an
> > included 'zone.py' writes alot of info to the console using
> > 'sys.stdout.write()'
> > can i intercept this using my first Tkinter prgram so i can display
> > this info in another freshly created window. basically i am writing
> > a gui for a cmdline script! if so has anyone got any examples of
> > code for me to look at that would be great!
>
> have a look at os.popen. it returns a file-like object where you can
> read the output from the programm you started.
>
> chris
>
> (PS: the NOSPAM will not help much, but its an inconvenience for
> people that want to anwser you. some months ago we had a discussion
> aout that on this group.)
> --
> Chris <cliechti at gmx.net>
>





More information about the Python-list mailing list