2017-07-01 56 views
2

我剛剛寫了一些代碼在命令行中工作,所以現在我想給它一些圖形。現在,這是我的第一個編程項目,所以忍耐一下,因爲我試圖解釋這一問題:如何使用PyGame在屏幕上呈現文本?

我使用pygame的初始化和窗口如下:

import pygame, pygame.midi,pygame.font, random 

(width, height) = (600, 400) 
background = (220,220,220) 

pygame.midi.init() 
pygame.font.init() 

screen = pygame.display.set_mode((width, height)) 
pygame.display.set_caption("Chord trainer") 
screen.fill(background) 

pygame.display.flip() 

然後我試圖呈現文本(這不給任何錯誤):

myfont = pygame.font.SysFont("Arial", 80) 
letter = myfont.render("SOME WEIRD TEST TO TRY AND GET THINGS WORKING",0,(0,0,0)) 
screen.blit(letter,(100,100)) 

而且因爲我想真正看到我的文字在程序關閉前,我建立了一個無限循環:

running = True 
while running: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      running = False 

當我運行它,我只是得到我想要的灰色屏幕,但沒有任何文本,這會讓我覺得我的blit命令有什麼問題,但我無法弄清楚什麼。

最初我有一個循環的渲染集,但這只是使程序無響應,所以我拿出來進行調試。爲了完整起見,這裏是環:

while True: 
    # Decide on random chord 
    c1 = random.choice(chords) 
    # Make sure that no repitition takes place. 
    if c1==c2: 
     while c1==c2: 
      c1=random.choice(chords) 
    c2 = c1 

    myfont = pygame.font.SysFont("Arial", 80) 
    letter = myfont.render(str(c1),0,(0,0,0)) 
    screen.blit(letter,(100,100)) 

    # Listen to Midi device and search for c. 
    midi_listen(inp,sorted(c1)) 
    score += 1 

回答

3

您需要添加

pygame.display.flip() 

letter = myfont.render("SOME WEIRD TEST TO TRY AND GET THINGS WORKING",0,(0,0,0)) 
screen.blit(letter,(100,100) 

它將更新您的屏幕,通常你就可以看到你的文本。

相關問題