[[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/