首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pygame.font.Font.render有TypeError

Pygame.font.Font.render有TypeError
EN

Stack Overflow用户
提问于 2014-02-11 16:23:57
回答 1查看 4.4K关注 0票数 1

这是我的全部节目(只是练习用的):

代码语言:javascript
复制
import pygame
pygame.init()
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            break
    pygame.font.Font.render('Hello world', 1, (255, 100, 100))

产出如下:

代码语言:javascript
复制
    Traceback (most recent call last):
  File "D:\Download\unim.py", line 8, in <module>
    pygame.font.Font.render('Hello world', 1, (255, 100, 100))
TypeError: descriptor 'render' requires a 'pygame.font.Font' object but received a 'str'

在游戏中,字型是可选的,但它会改善游戏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-11 16:48:53

你需要首先创建你的字体。

代码语言:javascript
复制
myfont = pygame.font.SysFont(None,10) # use default system font, size 10

然后你就可以

代码语言:javascript
复制
mytext = myfont.render('Hello world', 1, (255, 100, 100))

最后,您需要将mytext模糊到您的图面,并更新它以显示文本。

看看这个游戏文档:http://www.pygame.org/docs/ref/font.html

编辑:如果这是完整的脚本,您需要在事件循环之前初始化一个显示:

代码语言:javascript
复制
screen = pygame.display.set_mode((300,300)) # create a 300x300 display

然后,您可以将您的文本添加到屏幕上:

代码语言:javascript
复制
screen.blit(mytext, (0,0)) # put the text in top left corner of screen
pygame.display.flip() # update the display

由于文本是静态的,所以它也不需要在while True:循环中。您可以先显示文本。如果要根据事件更改文本,则应在循环中处理。

要回答注释部分中的错误消息,请编辑2,问题是在您发出pygame.quit()命令之后,仍有一些游戏命令正在运行。之所以这样做,是因为您的break命令只中断了for event...循环,但是您仍然在while True:循环中,所以blit命令仍然试图运行。

你可以这样做:

代码语言:javascript
复制
import pygame 
pygame.init() 
screen = pygame.display.set_mode((1200,600)) 
myfont = pygame.font.SysFont(None, 30) 
mytext = myfont.render('Hello world', 1, (255, 100, 100)) 
running = True
while running: 
  for event in pygame.event.get(): 
    if event.type==pygame.QUIT: 
      running=False

  screen.fill((255, 255, 255)) 
  screen.blit(mytext, (600, 300)) 
  pygame.display.flip()

pygame.quit()

这应该有效,因为主循环依赖于running是否为真。点击退出将此设置为false,因此脚本干净地退出while循环,然后运行pygame.quit()命令。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21707337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档