[python] Presmerovanie stdout do okna v Tkinteri
Michal Vyskocil
michal.vyskocil na gmail.com
Úterý Leden 30 22:58:07 CET 2007
Dne úterý 30 leden 2007 17:17 RMiklos na pss.sk napsal(a):
> Nazdar,
> Mam command-line programm, ktory pise rozne chybove hlasky cez print na
> stdout.
> Rad by som ho prerobil do GUI v Tkinteri, ale bez toho aby som musel
> namiesto printov vkladat tie retazce do widgetu ScrolledText,
> t.j. aby som nemusel kazdy prikaz
> print errormsg
> prepisovat na
> self.textokno.insert(END, msg)
> kde
> self.textokno = ScrolledText(..)
>
> Je nejaky sposob, ako presmerovat stdout do textoveho okna?
> (napriklad podobne ako sa da stdout presmerovat do suboru?)
> Kto by mi vedel poradit?
Neco takoveho by slo (a to jenom mozna) v plan9, ale v beznych OS ne (rozhodne
ne nijak jednoduse). stdout je z pohledu systemu bran jako soubor (majici
vlastni deskriptor a v unixech dokonce vlastni souborovou reprezentaci
v /dev/).
Bohuzel neni print v Pythonu normalni funkce, ale syntakticka konstrukce,
takze nic jako def print() napsat nejde.
Takze moznosti jsou asi tyto
1.) najit a nahradit v textovem editoru
2.) nadefinovat si vlastni funkci def tkprint()
3.) zabalit to do tridy, aby to fungovalo obecneji (pochopitelne mohou byt
promenne a metody staticke, pokud nam staci jeden widget se stdout)
class TkPrint:
def __init__(self, win):
self.win = win
def tkprint(self, msg): # pozor, metoda se nesmi jmenovat print
self.win.insert(END, msg)
IMHO je print jednou z bolistek Pythonu ...
--
best regards
Michal Vyskocil
Další informace o konferenci Python