[python] Presmerovanie stdout do okna v Tkinteri

Jakub Vojáček Jakohv na seznam.cz
Středa Leden 31 16:28:56 CET 2007


> ------------ Původní zpráva ------------
> Od: Pavel Kosina <geon na post.cz>
> Předmět: Re: [python] Presmerovanie stdout do okna v Tkinteri
> Datum: 31.1.2007 13:50:20
> ----------------------------------------

> trochu jsem to vylepšil ;-)
> 
> from Tkinter import *
> from ScrolledText import ScrolledText
> import sys
> 
> class py_message_box:
> 
>   def __init__(self, parent):
> 
>     self.frame = Frame(parent)
>     self.frame.pack()
> 
>     self.text = ScrolledText(self.frame, 
> background='black',foreground='green', font=("Courier", 9))
>     self.text.pack()
>    
>     self.mybutton = Button(self.frame, text="Quit", 
> command=self.mybuttonClick)
>     self.mybutton.pack(fill=BOTH) #roztažení
> 
>   def mybuttonClick(self):
>      self.frame.destroy()   # mě nikdy quit() nefungovalo...
> 
>   def write(self, s):
>     self.text.insert(END, s)
>     self.text.see(END)  # aby bylo poslední vždy vidět
> 
> root=Tk()
> text_window = py_message_box(root)
> sys.stdout = text_window
> 
> print "Toto je pokus o presmerovanie printu do okna\n"*100  # 100x
> root.mainloop()
> 
> 
> -- 
> geon
> Pavel Kosina

A jak bys to předělal aby to to zobrazovalo i chyby?  Přesměrovat print se mi podařilo, ale chyb ne:(
například eval("error")

zkoušel jsem
try:eval("x")
except:
    import traceback
    traceback.print_exc()
ale to stejne vypsalo chybu do shellu a ne do okna...

Dík
Blujacker


Další informace o konferenci Python