未找到Pygame blit'dest'参数

时间:2012-08-27 08:38:32

标签: python pygame

我正在尝试使用以下行将文本blit到我的表面上:

surface.blit(myFont.render(text, 1, text_color),(200,200))

但是我收到一个错误:TypeError:找不到必需参数'dest'(pos 2)

我似乎无法弄清楚为什么会这样......

3 个答案:

答案 0 :(得分:0)

我发现了错误......

我尝试将Font的大小设置为float类型。它似乎不喜欢那样! :)

答案 1 :(得分:0)

你没有给出一个正确的rect作为surface.blit()函数的第二个参数。它需要是一个矩形。我建议如下:

text=myFont.render(text, 1, text_color)
rect=text.get_rect()
rect.topleft=(200, 200)
surface.blit(text, rect)

要在一行代码中完成所有操作,可能会有点复杂:

surface.blit(myFont.render(text, 1, text_color), pygame.Rect(200, 200, myFont.render(text, 1, text_color).get_rect().width, myFont.render(text, 1, text_color).get_rect().height)

如果您希望它位于中心的200,200,那么简单的多行代码将如下所示:

text=myFont.render(text, 1, text_color)
rect=text.get_rect()
rect.centerx=200
rect.centery=200
surface.blit(text, rect)

为了在一行中完成它,它会变得非常冗长:

surface.blit(myFont.render(text, 1, text_color), pygame.Rect(200-myFont.render(text, 1, text_color).get_rect().width/2, 200-myFont.render(text, 1, text_color).get_rect().height/2, myFont.render(text, 1, text_color).get_rect().width, myFont.render(text, 1, text_color).get_rect().height)

正如您所看到的,在五行代码中执行此操作要容易得多,而不是像您尝试的那样执行一行,并且它可能会更快。基本上你必须为一行做的是渲染文本并为rect的每个参数获取其rect以避免错误。这将花费很长时间,特别是如果你把它放入循环中。如果您正在进行加载,它可能没问题,但我仍然会推荐多行。

答案 2 :(得分:-1)

Surface.blit(source, dest, area=None, special_flags = 0): return Rect

您没有将要绘制的曲面设置为参数。
有关详细信息,请阅读有关Surface.blit的文档