The first 3 arguments are positional.  If this were in pure python, then
background=None would have the same effect as just passing None.   The font
module is programed in C.  If you look at font.c you'll find

font_render (PyObject* self, PyObject* args)
{
    TTF_Font* font = PyFont_AsFont (self);
    int aa;
    PyObject* text, *final;
    PyObject* fg_rgba_obj, *bg_rgba_obj = NULL;
    Uint8 rgba[4];
    SDL_Surface* surf;
    SDL_Color foreg, backg;
    int just_return;
    just_return = 0;

    if (!PyArg_ParseTuple (args, "OiO|O", &text, &aa, &fg_rgba_obj,
                           &bg_rgba_obj))
        return NULL;

    if (!RGBAFromColorObj (fg_rgba_obj, rgba))
        return RAISE (PyExc_TypeError, "Invalid foreground RGBA argument");
    foreg.r = rgba[0];
    foreg.g = rgba[1];
    foreg.b = rgba[2];
    if (bg_rgba_obj)
    {
        if (!RGBAFromColorObj (bg_rgba_obj, rgba))
            return RAISE (PyExc_TypeError, "Invalid background RGBA
argument");
        backg.r = rgba[0];
        backg.g = rgba[1];
        backg.b = rgba[2];
        backg.unused = 0;
    }
    else
   {
        backg.r = 0;
        backg.g = 0;
        backg.b = 0;
        backg.unused = 0;
    }
 <snip>

While I haven't traced through all the code, it seems clear that if you pass
a parameter for the background, the function will check if it's a valid RGBA
argument, and raise a TypeError if it isn't.

I have found similar things in pygame before, although I can't recall the
details.

In any event, if you don't want a background apramter, leave it out; None
won't work whatever you do.

Saul

On Sun, Jan 9, 2011 at 4:29 PM, Floris van Manen <v...@klankschap.nl> wrote:

>
> On Jan 9, 2011, at 23:08, Gregor Lingl wrote:
>
> >> then try
> >>
> >> text = font.render("Hello world!", 1, (255, 255, 0), background=None)
> >>
> > Is there any reason, why this could work differently?
>
>
> Named arguments can be presented in any order.
> If there are more optional arguments in between, you'd get incorrect
> assignments if you leave the name out
>
>
>

Reply via email to