微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

类型错误:参数 1 必须是 pygame.Surface,而不是 str ,不起作用

如何解决类型错误:参数 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 举报,一经查实,本站将立刻删除。