为了账号安全,请及时绑定邮箱和手机立即绑定

Pygame 文本不显示

Pygame 文本不显示

jeck猫 2021-07-16 14:00:36
我是 python 的新手(和编码本身),并试图在 pygame 中创建一个 Hello World 脚本。它在 python 3.2 和 pygame 1.9.2 中。我有一本书,我直接从中复制了它,但是当我运行它时,我得到的只是一个黑色窗口。这是我的代码:import pygameimport syspygame.init()from pygame.locals import *white = 255,255,255blue = 0,0,200screen = pygame.display.set_mode((600,500))pygame.font.initmyfont = pygame.font.Font(None,60)textImage = myfont.render("Hello Pygame", True, white)screen.fill(blue)screen.blit(textImage, (100,100))pygame.display.update这本书使用的是完全相同的版本,但我仍然无法让它工作。
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

好的,有几个问题。


PyGame 屏幕更新功能是update(),您缺少该调用和字体 init 上的括号。


pygame.display.update()

screen = pygame.display.set_mode((600,500))

pygame.font.init()

其次,您的程序会立即退出。您需要实现一个事件循环,并等待窗口关闭消息。


这对我有用:


import sys

import pygame

from pygame.locals import *


white = 255,255,255

blue  = 0,0,200


pygame.init()

screen = pygame.display.set_mode((600,500))

pygame.font.init()

myfont = pygame.font.Font(None,60)

textImage = myfont.render("Hello Pygame", True, white)

screen.fill(blue)

screen.blit(textImage, (100,100))

pygame.display.update()


while (True):

    event = pygame.event.wait()

    if event.type == QUIT:

        pygame.quit()

        sys.exit()

我知道您才刚刚开始,但稍后可以节省您时间(并使其更容易)的一件事是将您的窗口宽度和高度放入变量中。然后根据这些值在屏幕上定位项目。这样,当您稍后更改显示大小(或其他)时,您只需要更改这两个地方的代码。


WIDTH  = 600

HEIGHT = 500


pygame.init()

screen = pygame.display.set_mode((WIDTH, HEIGHT))

...

text_width  = textImage.get_width()

text_height = textImage.get_height()

# Centre text #TODO - handle text being larger than window

screen.blit(textImage, ( (WIDTH-text_width)//2 , (HEIGHT-text_height)//2 ))

注意://是python中的整数除法


查看完整回答
反对 回复 2021-07-28
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

在最后一行的更新调用中缺少一个 ():

pygame.display.update()



查看完整回答
反对 回复 2021-07-28
  • 2 回答
  • 0 关注
  • 291 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号