Download presentation
Presentation is loading. Please wait.
1
CURSES!!!!! FOILED AGAIN!! Liam O’Leary 12/3/07 Seminar: Ruby V. Python Pr. John Santore
2
Curses and its Purposes: The curses library is used for displays on various terminals (like the Linux console) and controls simple things like text input, cursor movement, etc. A common use for curses is on things like OS installers and kernel configurators which run before more complicated graphics and text editors are available
3
Starting Curses… import curses stdscr = curses.initscr() initscr() initializes curses and sets up any necessary code to connect to the terminal. initscr(), creates a window, usually taking up the entire screen, to display curses graphics
4
Curses functions Pt. I newwin(height, width, begin y, begin x) – Creates a new curses window (Note: window coordinates in curses are the same as in pygame) noecho() - Prevents curses from displaying keystrokes on the screen echo() – Allows curses to display user input from the keyboard cbreak() – Used to allow curses programs to automatically react to keys, without needing Enter to be pressed
5
Curses Functions Pt. II (Featuring pad) refresh() – Refreshes the window, like blit() in pygame newpad() – Creates a “pad”, which can be bigger than the actual window or just a small section of a window which curses will use curs_set(0) – Allows you to hide the cursor, should your application not need it
6
Displaying Text in Curses Curses in python uses addch/str(y, x, str or ch, attr) to draw characters or strings onto the screen. The y and x in addstr() is optional, allowing you to specfically place the text where you want it. If omitted, the text is displayed in the upper left corner (0, 0) addstr() (and initscr) replaces mvaddstr() and waddstr() from the C version of curses, waddstr() creates a new window for the new string and mvaddstr() moves the string to a specified location
7
Attributes of Curses… A_BLINK – Causes any string or character written with this attribute to flash on screen A_BOLD – Makes strings or characters bold or extra bright A_DIM – Decreases brightness of text by half A_REVERSE – Puts text in reverse video
8
More Curses Attributes… A_STANDOUT – Sets the text to the brightest possible highlight A_UNDERLINE – Underlines all text with this attribute
9
Curses in Color start_color() – Initializes the default color set, needs to be called shortly after initscr() has_colors() – Returns true if the terminal has the ability to display colors Init_pair (x, foreground_color, background_color) – Initializes a color pair, with x being the number of the pair
10
Curses in Color Pt. II color_pair() – A designated foreground and background color fair curses output, default, color_pair(0), is white on black and can’t be changed curses eight normal color possibilities are 0) black, 1) red, 2) green, 3) yellow, 4) blue, 5) magenta, 6) cyan (blue-green), and 7) white. Colors are called by the function curses.COLOR_(RED)
11
Curses and You… getch() – Allows the user to input text into a curses window, it pauses, waits for a keystroke (assuming echo() was already called) and displays it to the screen. A (y, x) position can be given with getch() if desired getstr() – Just like getch(), but instead, accepts a string of a user-given length getmouse() – Accepts mouse clicks as events, represented by a 5-tuple (id, x, y, z, bit-state) id is a value used to distinguish between multiple devices, x and y are the events’ coordinates (z is unused) bit-state is a value used to determine what type of event it is; a button press, a button release, a double click, etc.
12
Curses and You Pt. II nodelay() – Turns off the default delay for getch() and gives an error if no input is received halfdelay(x) – Essentially sets a timer for getch(), if no input is received within the number of milliseconds equal to x, and exception is thrown
13
Curses and You Pt. III During getch(), curses only outputs numbers with ASCII values between 0 and 255, the following are functions for keys beyond that scope curses.KEY_HOME – A function to determine if a keystroke from getch() is, in fact, the HOME key, can used in a function to set the cursor back to the origin curses.KEY_LEFT (etc) – Same as KEY_HOME, only instead to be used to move the cursor by individual spaces
14
Fancy Curses… stdscr.hline(y, x, ch, n) – Draws a horizontal line of n length, starting at (y, x) made of the character ch stdscr.vline(y, x, ch, n) – Draws a vertical line of n length, starting at (y, x), made of the character ch beep() – Let’s out a short beeping sound
15
Curses on the Menu… Curses can give the appearance of menus, using addstr() and the proper amount of spacing Creating real menus with curses requires using either Tkinter or another library called dialog to create real menus and buttons
16
Cursed Curses!!! Upon finishing an application, curses has a tendency to mess up the terminal, either leaving it the last color used by the application, or not displaying any further input This problem is solved (at least on csdev01) by typing in reset, while you won’t see it appear on the screen, it will still work, setting the terminal back to normal
17
More Cursed Curses… Curses can set colors through RGB with a function called init_color(color, r, g, b). Color is a number representing one of the normal curses colors, (r, g, b) are numerical representations of the amount of red, green or blue desired, ranging from between 0 and 1000 However, init_color() will only work if the terminal is capable of doing so, which can be determined using can_change_color() (1 indicates true, meaning the terminal can use RGB to determine colors)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.