如何解决类型错误:参数 1 必须是 pygame.Surface,而不是 str ,不起作用
这是代码 ->
import pygame
import os
pygame.init()
width,height = (500,700)
bg=os.path.join('C:\\Users\\USER\\Desktop\\Python\\picture match','background.jpg')
WIN = pygame.display.set_mode((width,height))
def draw():
WIN.blit(bg,(0,0))
def main():
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
draw()
main()
我不知道为什么会出现错误,我以前的项目一直是这样工作的。
解决方法
bg
是一个字符串,包含文件名,但不是 pygame.Surface
对象。使用 pygame.image.load
从文件源加载图像:
bbg_filename = os.path.join('C:\\Users\\USER\\Desktop\\Python\\picture match','background.jpg')
bg = pygame.image.load(bg_filename)
将背景缩放到窗口大小:
bg = pygame.transform.scale(bg,(width,height)).convert()
在绘制场景后调用 pygame.display.update()
或 pygame.display.flip()
来更新显示:
draw()
pygame.display.flip()
完整示例:
import pygame
import os
pygame.init()
width,height = (500,700)
WIN = pygame.display.set_mode((width,height))
bg_filename = os.path.join('C:\\Users\\USER\\Desktop\\Python\\picture match','background.jpg')
bg = pygame.image.load(bg_filename)
bg = pygame.transform.scale(bg,height)).convert()
def draw():
WIN.blit(bg,(0,0))
def main():
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
draw()
pygame.display.flip()
main()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。