Hmmm, there seem to be several issues here. Firstly let me state my raspbian image used for testing is an update-update-update of an early image 7 Jan 2014, updated repeatedly through to current! It has collected smbus and PIL etc along the way. The point of that is, installing packages now just might give different results. But here goes ...
1. Do you have python-smbus (for python2.?) and python3-smbus (for python3) both installed? "name 'SMBus' is not defined" suggests a problem here. (I looked today at a fresh Raspbian of 5/5/2015. It shows python3-smbus not in the repository. An apt-get update/upgrade to today, and python3-smbus then reappears!)
2. To my understanding, the ageing PIL library has been available for python2 on Raspberry Pi (I installed it some while back) but the newer clone PILLOW has been slower in coming to Pi. I see from here https://www.pkimber.net/howto/python/mo ... illow.html
that PILLOW should be installable, but today my attempts have not yet succeeded. You seem to have one or other installed, or you should have seen "name PIL is not defined" errors. I probably installed PIL by a "pip" install, because it is (at least now) not in the repository. Until I find a drama-free installation for PILLOW then this oled library may not be so useful.
3. I didn't state it in my first posts, but this library was implemented on python (2) not python3, or at least not verified against python3. From experience porting some other projects, the error "Third argument must be a list" is a typical difference in getting python2 data stuff equally happy on python3. If I get a PIL/PILLOW version working here on python3 I should amend the code for python3.
Python3. Hmmm. Sometimes "windows" or "VHS", even "blueray" or "26-pin GPIO" could be judged not tech-best, but nevertheless market-best. Put that another way: each company should be run by the entrepreneur, not the engineer. (I'm an engineer!)
In the meantime, the lib_oled96 library as posted should work if you can get PIL and smbus onto python2.