2016-12-25 50 views
1

所以基本上我只是想在Python中使用pygame做一些东西。这是代码的一部分,其余代码不影响本,所以我Python/Pygame,标签没有显示

from pygame import * 
from pygame.locals import * 
import pygame 
from sys import exit 
from random import * 
import time 

pygame.init() 
font.init() 

screen = display.set_mode((1920, 1080), FULLSCREEN) 
screen.fill((0, 0, 0)) 

countTime = 1 
while countTime < 4: 
    default_font = pygame.font.get_default_font() 
    font_renderer = pygame.font.Font(default_font, 45) 
    label = font_renderer.render(str(countTime).\ 
      encode('utf-8'), 1, (255, 255, 255)) 
    screen.blit(label, (1920/2, 1080/2)) 
    countTime += 1 
    time.sleep(1) 

因此,大家可以看到,这是什么意思做的是创建一个只是有一些字母要全屏窗口“ 3“,”2“,”1“,然后执行我的其他代码。

一切看起来不错,但问题是什么都没有出现。我只是想要一个黑色的全屏窗口,但没有显示白色文字。我究竟做错了什么?

回答

3

pygame.display创建screen这是在存储器(缓冲器),这表面上的所有blit平局surface。您必须使用display.flip()display.update()在屏幕/监视器上发送此表面/缓冲区。


编辑:示例代码

import pygame 

# --- constants --- (UPPER_CASE names) 

BLACK = (0, 0, 0) 
WHITE = (255, 255, 255) 

# --- classes --- (CamelCase names) 

# empty 

# --- functions --- (lower_came names) 

# empty 

# --- main --- 

# - init - 

pygame.init() 

screen = pygame.display.set_mode((800, 600)) 
screen_rect = screen.get_rect() 

# - objects - 

default_font = pygame.font.get_default_font() 
font_renderer = pygame.font.Font(default_font, 45) 

# - mainloop - 

count_time = 1 
running = True 

while running: 

    # --- events --- 

    for event in pygame.event.get(): 
     # close window with button `X` 
     if event.type == pygame.QUIT: 
      running = False 

     # close window with key `ESC` 
     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_ESCAPE: 
       running = False 

    # --- updates (without draws) --- 

    label = font_renderer.render(str(count_time), True, WHITE) 
    label_rect = label.get_rect() 
    # center on screen 
    label_rect.center = screen_rect.center 

    count_time += 1 
    if count_time >= 4: 
     running = False 

    # --- draws (without updates) --- 

    screen.fill(BLACK) 
    screen.blit(label, label_rect) 
    pygame.display.flip() 

    # --- speed --- 

    # 1000ms = 1s 
    pygame.time.delay(1000) 

# - end - 

pygame.quit() 
+1

一旁:使用'screen.fill((0,0,0))'内环路,或先前的数目也不会被擦除。 –

+0

谢谢!代码也有一些缺陷,但现在我可以看到柜台,我知道该怎么修复。 +1标记为答案。 – Octo

+0

查看具有其他有用元素的示例代码。 – furas