python - 无法在pygame中将文本添加到屏幕

标签 python pygame

当我运行此代码时,出现错误“ValueError:大小需要为(int width,int height)”。

display_width = 800
display_height = 600
welcomeScreen = pygame.display.set_mode((display_width, display_height))

red = (255, 0, 0)
white = (255, 255, 255)

welcomeScreen.fill(white, rect = None, special_flags = 0)

welcomeMessageBackground = pygame.draw.rect(welcomeScreen, red, [200, 100, 400, 75]) 
welcomeFont = pygame.font.Font(None, 50)
welcomeMessage = welcomeFont.render('Welcome! Click a button to get started.', True, white)
pygame.Surface.blit(pygame.Surface(display_width, display_height), welcomeMessageBackground, area = None, special_flags = 0)
pygame.display.update()

导致问题的行是

pygame.Surface.blit(pygame.Surface(display_width, display_height), welcomeMessageBackground, area = None, special_flags = 0)

我尝试用变量替换值 800 和 600,同样的错误。我想要的是 welcomeMessage 中的文本显示在 rect welcomeMessageBackground 上。感谢您的帮助!

最佳答案

这一行没有意义。

pygame.Surface.blit(pygame.Surface(display_width, display_height), welcomeMessageBackground, area = None, special_flags = 0)

您不应调用 pygame.Surface.blit(),而应调用您要 blit 另一个表面的表面的 blit 方法,例如:

welcomeScreen.blit(welcomeMessage, (70, 100))

welcomeFont.render 返回一个可以 blit 到屏幕或其他表面上的表面。


要创建一个 pygame.Surface 实例,您必须为宽度和高度传递一个元组,pygame.Surface((100, 200)),但是在你的情况你根本不需要创建另一个表面。


此外,如果您想在文本后面添加背景色,只需将颜色传递给字体的 render 方法即可:

welcomeMessage = welcomeFont.render(
    'Welcome! Click a button to get started.', True, white, red)

关于python - 无法在pygame中将文本添加到屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44276324/

相关文章:

python - 类型错误:url() 获得意外的关键字参数 'name_space'

python - 如何将向量添加到矩阵

python - "no matching architecture in universal wrapper"导入pygame时

python - Python 未检测到对角线胜利

python - Ubuntu 上 PIL 的问题

python - Django:将 View 中的日期时间设置为 utc+1

python - 函数中定义的变量不能被另一个函数调用? Jython

python - Pygame 错误加载声音 : Module format not recognised

python - 在 pygame 中查找 Sprite

python - 我应该使用 Python 双端队列还是列表作为堆栈?