[[oktatas:programozás:python|< Python]]
====== Python curses ======
* **Szerző:** Sallai András
* Copyright (c) 2021, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Kezdés =====
Csak Windowson szükséges:
python -m pip install windows-curses
Ellenőrizzük:
>>> import curses
===== Billentyűzetfigyelés =====
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.
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 =====
* https://docs.python.org/2/howto/curses.html#curses-howto
* https://ironpython-test.readthedocs.io/en/latest/howto/curses.html
* https://www.devdungeon.com/content/curses-programming-python
* https://funprojects.blog/2019/10/26/simple-terminal-interfaces/