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()