当我运行此代码时,出现错误“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/