Skip to content

Instantly share code, notes, and snippets.

@myano
Created June 30, 2011 01:25
Show Gist options
  • Save myano/1055442 to your computer and use it in GitHub Desktop.
Save myano/1055442 to your computer and use it in GitHub Desktop.
Quick example of ncurses in Python!
#!/usr/bin/env python
import curses
import curses.textpad
import time
stdscr = curses.initscr()
#curses.noecho()
#curses.echo()
begin_x = 20
begin_y = 7
height = 5
width = 40
win = curses.newwin(height, width, begin_y, begin_x)
tb = curses.textpad.Textbox(win)
text = tb.edit()
curses.addstr(4,1,text.encode('utf_8'))
#hw = "Hello world!"
#while 1:
# c = stdscr.getch()
# if c == ord('p'):
# elif c == ord('q'): break # Exit the while()
# elif c == curses.KEY_HOME: x = y = 0
curses.endwin()
@reteps
Copy link

reteps commented Dec 26, 2016

How you can avoid keyboard interrupt problems: catch it, and reset the curses variables.

def reset(screen):
    curses.nocbreak()
    screen.keypad(0)
    curses.echo()
    curses.endwin()
try:
    #your code
    #if it terminates, call `reset(screen)` here too.
except KeyboardInterrupt:
    reset(screen)
    exit()

@ice1x
Copy link

ice1x commented Feb 14, 2018

if c == ord('p'): print hw
?

@hash3liZer
Copy link

Can someone explains me the usage of curses.wrapper()? It looks pretty simple.

@chrisshroba
Copy link

Quick tip, if you exit without cleaning up and your terminal is in a wonky state, just run stty sane and it'll be good as new 😀

@Andre-Luis-Lopes-da-Silva

When I try to use the curses. I use UBUNTU and the code returns this error:
Traceback (most recent call last):
File "/home/andre/Desktop/Python - Programas/exemplo curses.py", line 4, in
stdscr = curses.initscr()
File "/usr/lib/python3.6/curses/init.py", line 30, in initscr
fd=_sys.stdout.fileno())
_curses.error: setupterm: could not find terminal

Someone knows why this occurs?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment