Last active
December 9, 2017 07:52
-
-
Save vcidst/5e583741ab50f7d28fb928b96cd995e1 to your computer and use it in GitHub Desktop.
Revisions
-
vcidst revised this gist
Apr 7, 2017 . No changes.There are no files selected for viewing
-
vcidst revised this gist
Apr 7, 2017 . No changes.There are no files selected for viewing
-
vcidst created this gist
Apr 7, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,88 @@ # This gist is transcribed from a talk by Sean Zicari # Talk: Use Curses, don't swear https://www.youtube.com/watch?v=eN1eZtjLEnU # # I haven't written the function which he used to fetch quotes from the web # This only presents the barebones structure of his application # # If debugging a curses application messes up your terminal, type `tset` to reset terminal import curses stdscr = curses.initscr() # initialize the screen curses.noecho() curses.cbreak() curses.curs_set(0) # check and begin color support if curses.has_colors(): curses.start_color() # optionally enable the keypad # stdscr.keypad(1) # initialize color combinations curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK) curses.init_pair(3, curses.COLOR_BLUE, curses.COLOR_BLACK) # if your terminal supports colors, any number from 0-255 can be used in place of colors # begin program stdscr.addstr("RANDOM QUOTES", curses.A_REVERSE) stdscr.chgat(-1, curses.A_REVERSE) # curses.LINES and curses.COLS contain height and width of screen # adds string at coordinate (curses.LINES-1, 0) stdscr.addstr(curses.LINES-1, 0, "Press Q to watch me not obey") # Change the R to green stdscr.chgat(curses.LINES-1, 7, 1, curses.A_BOLD | curses.color_pair(2)) # Set up the window to hold the random quotes quote_window = curses.newwin(curses.LINES-2, curses.COLS, 1,0) # curses.LINES-2 and curses.COLS are the height and width of new window (rectangle) # (1,0) is where it starts from # create a sub-window for visibility quote_text_window = quote_window.subwin(curses.LINES-6, curses.COLS-4, 3, 2) # without coordiates, addstr() adds string to whereever pointer is (which is beginning, in this case) quote_text_window.addstr("Press R to watch yourself burn") # draw a border around main window quote_window.box() # update the internal window data structure stdscr.noutrefresh() quote_window.noutrefresh() # redraw the screen curses.doupdate() # create an event loop while True: c = quote_window.getch() if c == ord('r') or c == ord('R'): quote_text_window.clear() quote_text_window.addstr("I'm just a terminal screen, I can't really do anything...", curses.color_pair(3)) quote_text_window.refresh() quote_text_window.clear() quote_text_window.addstr("There's so much happening all the time") elif c == ord('q') or c == ord('Q'): break # refresh the windows from the bottom up stdscr.noutrefresh() quote_window.noutrefresh() quote_text_window.noutrefresh() curses.doupdate() # Restore the terminal settings curses.nocbreak() #stdscr.keypad(0) curses.echo() curses.curs_set(1) # restore terminal curses.endwin()