[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Strange (uncommon) behaviour of Font.render()



then try

text = font.render("Hello world!", 1, (255, 255, 0), background=None)




On Jan 9, 2011, at 22:38, Gregor Lingl wrote:

> 
> 
> Am 09.01.2011 21:59, schrieb Floris van Manen:
>> you could try
>> 
>>> text = font.render("Hello world!", 1, (255, 255, 0,255), None)
> Ok. I did. But it doesn't work either.
> 
> I'm especially puzzled, because this is against the way I thought
> Python would handle keyword arguments.
> 
> Clearly None is an invalid RGBA argument, as the error message states.
> But according to the docs the parameter background has as its
> default value None. Why is it, that settig background to its default value
> doesn't work, while it works well when I leave it out, in which case it should
> also have the value None?
> 
> Are these two different None-s?
> 
> Who knows an explanation?
> 
> Who knows a workaround for this sort of usage:
> 
> def text_line(surface, font, text, x, y, color, bg=None):
>    ...
>    label = font.render(text, 1, color, bg)
>    ...
> 
> which fails if bg is not given.
> 
> Best regards,
> Gregor
> 
>> On Jan 9, 2011, at 21:31, Gregor Lingl wrote:
>> 
>>> Executing the script
>>> 
>>> import pygame
>>> 
>>> pygame.init()
>>> screen = pygame.display.set_mode((400, 300))
>>> 
>>> font = pygame.font.SysFont("Arial", 64)
>>> text = font.render("Hello world!", 1, (255, 255, 0), None)
>>> screen.blit(text, (72, 113))
>>> pygame.display.flip()
>>> 
>>> pygame.event.clear()
>>> pygame.event.wait()
>>> 
>>> results in an exception:
>>> 
>>> Traceback (most recent call last):
>>>  File "C:\Dokumente und Einstellungen\Entwickler\Eigene Dateien\My Dropbox\___pygame4kids___\kapitel04\programme\render_problem.py", line 9, in<module>
>>>    text = font.render("Hello world!", 1, (255, 255, 0), None)
>>> TypeError: Invalid background RGBA argument
>>> 
>>> In the docs for pygame.font.Font() one reads:
>>> 
>>> Font.render
>>>     draw text on a new Surface
>>>     Font.render(text, antialias, color, background=None): return Surface
>>> 
>>>     ...
>>> 
>>> See:
>>> http://www.pygame.org/docs/ref/font.html#pygame.font.Font
>>> 
>>> So, because in Python
>>> 
>>>>>> None is None
>>> True
>>> 
>>> I expected the call
>>> 
>>> font.render("Hello world!", 1, (255, 255, 0), None)
>>> 
>>> to have the same effect as
>>> 
>>> font.render("Hello world!", 1, (255, 255, 0))
>>> 
>>> So, what's the matter? What am I missing?
>>> 
>>> Best regards,
>>> Gregor
>>> 
>>> 
>>> 
>>