-
-
Save myano/1055442 to your computer and use it in GitHub Desktop.
#!/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() |
I like it without wrapper() - makes it easier to type into command-line python.
D'oh! why did I think that work work??? :-)
To get out, I just hit ^C and then pasted in the endwin() call
Thanks so much ;)
If your terminal gets completely hosed, you can usually run "tset" which means Terminal reSET.
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()
if c == ord('p'): print hw
?
Can someone explains me the usage of curses.wrapper()? It looks pretty simple.
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 😀
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?
@riteshk, are you sure that you're calling the
curses.endwin()
function? Even if you are, if your code somehow exits due to an exception, your terminal will be changed becausecurses.endwin()
will not have been called?For this reason, it is recommended that you wrap your curses program in
curses.wrapper()
so that things fail gracefully.