Tartalomjegyzék

< Python

Python curses

Kezdés

Csak Windowson szükséges:

python -m pip install windows-curses

Ellenőrizzük:

>>> import curses

Billentyűzetfigyelés

bil.py
import curses
 
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(1)
 
while True:
    c = stdscr.getch()
    stdscr.clear()
    stdscr.move(5, 5)    
    if c == ord('p'):
        stdscr.addstr('valami')
    elif c == ord('q'):
        break
    elif c == curses.KEY_HOME:
        stdscr.addstr('Home')
    elif c == curses.KEY_UP:
        stdscr.addstr('Fel')
    elif c == curses.KEY_DOWN:
        stdscr.addstr('Le')
    elif c == curses.KEY_LEFT:
        stdscr.addstr('Balra')
    elif c == curses.KEY_RIGHT:
        stdscr.addstr('Jobbra')
    stdscr.refresh()
curses.endwin()

Bekérés

Várakozás egy billentyűre:

stdscr.getch()

Szöveg bekérése:

stdscr.getstr()

Attribútumok és színezés

A curses.initscr() után meg kell hívni a start_color() függvényt.

stdscr = curses.initscr()
curses.start_color()
...

Ezek után, összeállítunk egy színpárt, majd alkalmazzuk:

curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
stdscr.addstr(szo, curses.color_pair(1))

Ablakok

      //height, width, begin_y, begin_x
win = curses.newwin(5, 20, 2, 20)
win.addstr('Valami')
win.refresh()

Példaprogram

A program, karaktereket eszik. De csak a magánhangzókat szereti.

betuevo.py
import curses
import time
import re
 
def ertekeles(kaja):
    res = re.search(r"[bcdfghjklmnpqrstvwxyz]", str(kaja))
    if not res:
        return True
    else:
        return False
 
stdscr = curses.initscr()
curses.start_color()
curses.echo()
curses.cbreak()
stdscr.keypad(1)
 
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
curses.init_pair(2, curses.COLOR_BLUE, curses.COLOR_WHITE)
 
topwin = curses.newwin(1, 80, 2, 0)
topwin.bkgd(curses.color_pair(2))
topwin.move(0, 30)
topwin.addstr('Karakterevő')
topwin.refresh()
 
mainwin = curses.newwin(15, 40, 4, 0)
 
while True:
    mainwin.clear()
    mainwin.move(1, 5)
    szo = mainwin.getstr()
    mainwin.move(4, 5)
    finom = ertekeles(szo.decode())
    if finom:        
        mainwin.addstr('Finom')
    else:
        mainwin.addstr('Nem szeretem a mássalhangzókat!')
    mainwin.move(10,5)
    mainwin.addstr(szo, curses.color_pair(1))
    mainwin.refresh()
    time.sleep(1)
curses.endwin()

Lásd még