2017-05-31 91 views
2

當我運行此代碼時,出現錯誤「ValueError:size requires(int width,int height)」。在pygame中向屏幕添加文本時遇到問題

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上。任何幫助表示讚賞!

回答

0

你需要使用一個tuple的價值:

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

所以包裝內()display_widthdisplay_height應該工作。檢查出documentation

1

這條線沒有意義。

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

你不應該叫pygame.Surface.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) 
相關問題