渲染不适用于 str 对象
render doesn't apply to a str object
import pygame
from pygame.locals import *
pygame.init()
surf = pygame.display.set_mode((400,400))
pygame.draw.rect(
surface = surf,
color = (0,255,255),
rect = (100,100,100,50)
)
clock = pygame.time.Clock()
t = pygame.font.Font.render("Change Color",1,(255,255,255))
display.blit(
source = t,
dest = (100,100,100,50),
area = None,
special_flags = 0
)
pygame.display.update()
我收到的错误信息是这样的:
t = pygame.font.Font.render("Change Color",1,(255,255,255))
TypeError: descriptor 'render' for 'pygame.font.Font' objects doesn't apply to a 'str' object
我做错了什么?
我想通了...
首先,render
不接受位置参数,所以我们不能使用它们。
Link 到文档:
其次,您必须指定要使用的字体。
接下来我尝试使用这个:
import pygame
from pygame.locals import *
pygame.init()
font_game = pygame.font.SysFont("Arial",20)
t = pygame.font.Font.render(
"Testing: ",
1,
(255,255,255)
)
但这是错误的
TypeError: descriptor 'render' for 'pygame.font.Font' objects doesn't
apply to a 'str' object
如果您查看位于此处的文档:
https://www.pygame.org/docs/ref/font.html#pygame.font.Font.render
这些是参数:
render(text, antialias, color, background=None)
背景是一个可选参数,我指定了 3 个参数,所以我做错了什么?
安装 pygame
时,下载的文件之一是 font.pyi
文件。
如果您查看该文件,您会发现:
class Font(object):
def __init__(self, name: Union[AnyPath, IO[Any], None], size: int) -> None: ...
def render(
self,
text: str,
antialias: bool,
color: _ColorValue,
background: Optional[_ColorValue] = None,
) -> Surface: ...
(该文件中还有更多内容,但这是重要的部分)。
您不仅必须指定文本、抗锯齿和颜色,而且如果您查看 class、def __init__
中的第一行,它会告诉您您需要指定字体和大小。
一旦我将代码更改为此,它就可以正常工作:
font_game = pygame.font.SysFont("Arial",20)
t = pygame.font.Font.render(
font_game,
"Testing: ",
1,
(255,255,255)
)
import pygame
from pygame.locals import *
pygame.init()
surf = pygame.display.set_mode((400,400))
pygame.draw.rect(
surface = surf,
color = (0,255,255),
rect = (100,100,100,50)
)
clock = pygame.time.Clock()
t = pygame.font.Font.render("Change Color",1,(255,255,255))
display.blit(
source = t,
dest = (100,100,100,50),
area = None,
special_flags = 0
)
pygame.display.update()
我收到的错误信息是这样的:
t = pygame.font.Font.render("Change Color",1,(255,255,255))
TypeError: descriptor 'render' for 'pygame.font.Font' objects doesn't apply to a 'str' object
我做错了什么?
我想通了...
首先,render
不接受位置参数,所以我们不能使用它们。
Link 到文档:
其次,您必须指定要使用的字体。
接下来我尝试使用这个:
import pygame
from pygame.locals import *
pygame.init()
font_game = pygame.font.SysFont("Arial",20)
t = pygame.font.Font.render(
"Testing: ",
1,
(255,255,255)
)
但这是错误的
TypeError: descriptor 'render' for 'pygame.font.Font' objects doesn't apply to a 'str' object
如果您查看位于此处的文档:
https://www.pygame.org/docs/ref/font.html#pygame.font.Font.render
这些是参数:
render(text, antialias, color, background=None)
背景是一个可选参数,我指定了 3 个参数,所以我做错了什么?
安装 pygame
时,下载的文件之一是 font.pyi
文件。
如果您查看该文件,您会发现:
class Font(object):
def __init__(self, name: Union[AnyPath, IO[Any], None], size: int) -> None: ...
def render(
self,
text: str,
antialias: bool,
color: _ColorValue,
background: Optional[_ColorValue] = None,
) -> Surface: ...
(该文件中还有更多内容,但这是重要的部分)。
您不仅必须指定文本、抗锯齿和颜色,而且如果您查看 class、def __init__
中的第一行,它会告诉您您需要指定字体和大小。
一旦我将代码更改为此,它就可以正常工作:
font_game = pygame.font.SysFont("Arial",20)
t = pygame.font.Font.render(
font_game,
"Testing: ",
1,
(255,255,255)
)