It errors out every time. I think it's because it's going off the screen, but the height and width variables are coming from self.main.getmaxyx(), so it shouldn't do that, right? What am I missing? Python 3.4.3 running in Ubuntu 14.04 should that matter.

The addch, waddch, mvaddch and mvwaddch routines put the
character ch into the given window at its current window
position, which is then advanced. They are analogous to
putchar in stdio(3). If the advance is at the right margin:

The cursor automatically wraps to the beginning of the
next line.

At the bottom of the current scrolling region, and if
scrollok is enabled, the scrolling region is scrolled
up one line.

If scrollok is not enabled, writing a character at the
lower right margin succeeds. However, an error is
returned because it is not possible to wrap to a new
line

Python's curses binding has scrollok. To add characters without scrolling, you would call it with a "false" parameter, e.g.,

self.main.scrollok(0)

If you do not want to scroll, you can use a try/catch block, like this: