2 | ||
Editor: geon
Time: 2011/10/13 21:08:01 GMT+2 |
||
Note: pridavani znacek 2x-3x |
changed: - .. image:: py25.png :align: right Modul Console ============== Lze nalézt na http://effbot.org/zone/console-handbook.htm Modul Console nabízí jednoduché rozhraní pro vytváření pseudografických aplikací pro konzoli OS MS Windows. Umožňuje jednoduchým způsobem zpracovávat události z klávesnice. V manuálu se hovoří i o odchytu událostí z myši, ale to nefunguje - vyzkoušeno na MS Windows 2000. Velkou nevýhodou je absence metody na přímé získání dat z konzole, proto se v současné podobě hodí spíše jen na jednoduché prezentační aplikace s dosovou grafikou. Vypadá to, že autor modul dále nerozvíjí, takže současná verze je zřejmě i konečná. Základem modulu je metoda getconsole(), která vrací instanci objektu console. Tato instance obsahuje základní metody pro práci s konzolí. Několik jednoduchých ukázek: ============================ Demo1 - barevný rám s textem: ----------------------------- :: import Console, random title='DEMO1' c = Console.getconsole() #vytvoreni instance konzole c.cursor(0) #skryti kurzoru c.title(title) #nastaveni titulku okna for x in xrange(20): for y in xrange(20): c.text(x,y,'x',random.randint(1,15)) c.rectangle((5,8,15,13)) #vyrez uprostred ctverce c.text(8,10,title,12) #vlozeni textu do vyrezu Demo2 - mazání obrazovky pomocí metody page(): ----------------------------------------------- :: import Console, random, time title='DEMO2' text='Na konci teto vety smazu celou obrazovku.' c = Console.getconsole() c.cursor(0) c.title(title) while 1: x = 0 while (x != len(text)): for y in xrange(15): c.text(x,y,text[x],random.choice((10,14,15,7))) x += 1 time.sleep(0.1) c.page() Demo3 - odchyt události při psaní na konzoli: ---------------------------------------------- :: import Console title='DEMO3 - Psani na konzoli' c = Console.getconsole() c.title(title) while 1: event = c.get() #vraci instanci tridy Event if event.type == 'KeyPress': c.write(event.char) Demo4 - zabalení aplikace do třídy, ukázka odchytnutí události a zobrazení deskriptorů události: ------------------------------------------------------------------------------------------------ :: import Console class App: def __init__(self,title): self.title = title self.c = Console.getconsole() self.c.title(self.title) def mainloop(self): while 1: event = self.c.get() print 'Event type:%s,char:"%s",keycode:%s,keysym:%s,state:%s,serial:%s' % ( event.type, event.char, event.keycode, event.keysym, event.state, event.serial ) aplikace = App('DEMO4') aplikace.mainloop() Demo5 - ukázka metody scroll() - posouvaní textu po konzoli: ------------------------------------------------------------- :: import Console, random class App: def __init__(self,title): self.c = Console.getconsole() self.c.title(title) self.rectangle = (0,0,self.c.size()[0],self.c.size()[1]) self.c.text(10,10,'Pro vytvoreni barevneho obdelniku stiskni Enter',14) self.c.text(10,12,'Posouvej text pomoci klaves Up,Left,Right,Down',14) def mainloop(self): while 1: event = self.c.get() if event: self.handleEvent(event) def handleEvent(self,event): direction = {'Left':-1,'Right':1,'Up':-1,'Down':1} if event.type == 'KeyPress': if event.keysym == 'Return': self._drawRectangle(self.rectangle) elif event.keysym in ('Left','Right'): self.c.scroll( self.rectangle, direction[event.keysym], 0 ) elif event.keysym in ('Up','Down'): self.c.scroll( self.rectangle, 0, direction[event.keysym] ) def _drawRectangle(self,rectangle): for x in xrange(rectangle[0],rectangle[2]): for y in xrange(rectangle[1],rectangle[3]): self.c.text(x,y,'x',random.randint(1,15)) aplikace = App('DEMO5') aplikace.mainloop()
Lze nalézt na http://effbot.org/zone/console-handbook.htm
Modul Console nabízí jednoduché rozhraní pro vytváření pseudografických aplikací pro konzoli OS MS Windows. Umožňuje jednoduchým způsobem zpracovávat události z klávesnice. V manuálu se hovoří i o odchytu událostí z myši, ale to nefunguje - vyzkoušeno na MS Windows 2000.
Velkou nevýhodou je absence metody na přímé získání dat z konzole, proto se v současné podobě hodí spíše jen na jednoduché prezentační aplikace s dosovou grafikou. Vypadá to, že autor modul dále nerozvíjí, takže současná verze je zřejmě i konečná.
Základem modulu je metoda getconsole(), která vrací instanci objektu console. Tato instance obsahuje základní metody pro práci s konzolí.
import Console, random title='DEMO1' c = Console.getconsole() #vytvoreni instance konzole c.cursor(0) #skryti kurzoru c.title(title) #nastaveni titulku okna for x in xrange(20): for y in xrange(20): c.text(x,y,'x',random.randint(1,15)) c.rectangle((5,8,15,13)) #vyrez uprostred ctverce c.text(8,10,title,12) #vlozeni textu do vyrezu
import Console, random, time title='DEMO2' text='Na konci teto vety smazu celou obrazovku.' c = Console.getconsole() c.cursor(0) c.title(title) while 1: x = 0 while (x != len(text)): for y in xrange(15): c.text(x,y,text[x],random.choice((10,14,15,7))) x += 1 time.sleep(0.1) c.page()
import Console title='DEMO3 - Psani na konzoli' c = Console.getconsole() c.title(title) while 1: event = c.get() #vraci instanci tridy Event if event.type == 'KeyPress': c.write(event.char)
import Console class App: def __init__(self,title): self.title = title self.c = Console.getconsole() self.c.title(self.title) def mainloop(self): while 1: event = self.c.get() print 'Event type:%s,char:"%s",keycode:%s,keysym:%s,state:%s,serial:%s' % ( event.type, event.char, event.keycode, event.keysym, event.state, event.serial ) aplikace = App('DEMO4') aplikace.mainloop()
import Console, random class App: def __init__(self,title): self.c = Console.getconsole() self.c.title(title) self.rectangle = (0,0,self.c.size()[0],self.c.size()[1]) self.c.text(10,10,'Pro vytvoreni barevneho obdelniku stiskni Enter',14) self.c.text(10,12,'Posouvej text pomoci klaves Up,Left,Right,Down',14) def mainloop(self): while 1: event = self.c.get() if event: self.handleEvent(event) def handleEvent(self,event): direction = {'Left':-1,'Right':1,'Up':-1,'Down':1} if event.type == 'KeyPress': if event.keysym == 'Return': self._drawRectangle(self.rectangle) elif event.keysym in ('Left','Right'): self.c.scroll( self.rectangle, direction[event.keysym], 0 ) elif event.keysym in ('Up','Down'): self.c.scroll( self.rectangle, 0, direction[event.keysym] ) def _drawRectangle(self,rectangle): for x in xrange(rectangle[0],rectangle[2]): for y in xrange(rectangle[1],rectangle[3]): self.c.text(x,y,'x',random.randint(1,15)) aplikace = App('DEMO5') aplikace.mainloop()