首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pygame填充错误(AttributeError:'pygame.Surface‘对象属性’python3‘是只读的)

Pygame是一个用于开发2D游戏和多媒体应用程序的Python库。在使用Pygame进行绘图时,可能会遇到填充错误的问题,其中一个常见的错误是"AttributeError: 'pygame.Surface' object attribute 'python3' is read-only"。

这个错误通常是因为尝试修改一个只读属性导致的。在Pygame中,Surface对象是用于表示图像的二维网格,它具有一些只读属性,如宽度、高度和像素格式等。这些只读属性不能被直接修改。

要解决这个错误,需要确保在尝试修改Surface对象之前,先创建一个新的Surface对象,并将原始Surface对象的内容复制到新的Surface对象中。可以使用pygame.Surface.copy()方法来实现这一点。下面是一个示例代码:

代码语言:txt
复制
import pygame

# 创建一个Surface对象
surface = pygame.Surface((100, 100))

# 创建一个新的Surface对象,并将原始Surface对象的内容复制到新的Surface对象中
new_surface = surface.copy()

# 在新的Surface对象上进行填充操作
new_surface.fill((255, 0, 0))

在上面的示例中,我们首先创建了一个Surface对象surface,然后使用copy()方法创建了一个新的Surface对象new_surface,并将原始Surface对象的内容复制到新的Surface对象中。接下来,我们可以在新的Surface对象上进行填充操作,而不会出现只读属性的错误。

Pygame的优势在于它提供了丰富的功能和易于使用的接口,使开发者能够快速开发2D游戏和多媒体应用程序。它适用于各种应用场景,包括游戏开发、图像处理、动画制作等。

腾讯云提供了一系列与游戏开发和云计算相关的产品和服务,其中包括云服务器、云数据库、云存储等。您可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Easy Games With Python and Pygame(一)- Pygame Quickstart

绘制图形需要以下几步 导入Pygame模块 Pygame初始化 定义窗口显示内容 定义窗口 创建并将内容填充到窗口中 刷新显示 创建pygame_quickstart.py脚本 import pygame...程序 render()方法返回一个Surface类,这个Surface类就是承载文本内容窗口 四、Surface 类 set_mode()函数返回一个pygame.Surface对象,Surface...() Surface对象可以调用fill()方法既清除屏幕填充颜色,bilt()方法既进行绘制图形,只不过在上述代码中显示一个文本,该方法返回一个Rect类,还可以调用bilts()绘制多个图形,...需要了解Pygame库中存在多个Surface类 并且pygame.Surfacepygame.SurfaceType类相等,fill()、bilt()等方法注释可以在SurfaceType...类中看到 五、Rect 类 在pygamedraw模块用来绘制图形,比如矩形、圆形、椭圆、线条等 所有这些方法都会返回Rect类,并且这些方法都需要输入一个Surface对象作为参数还有其他一些参数比如位置

1.2K10

PyGame:Python 游戏编程入门-1

pygamepygame在您平台上安装,请使用适当pip命令: $ pip install pygame 您可以通过加载库附带示例之一来验证安装: $ python3 -m pygame.examples.aliens...第 15 到 17 行扫描并处理游戏循环中事件。您稍后也会参加活动。在这种情况下,唯一处理事件pygame.QUIT,当用户单击窗口关闭按钮时发生。 第 20 行用纯色填充窗口。...显示器和表面 除了模块之外,pygame还包括几个 Python类,它们封装了非硬件依赖概念。其中之一Surface最基本,它定义了一个可以绘制矩形区域。Surface对象pygame....如果,则程序通过查看event.key属性来检查按下了哪个键。如果键Esc键,用 表示K_ESCAPE,则通过设置 退出游戏循环running = False。...回想一下,aSurface一个可以在其上绘图矩形对象,就像一张白纸。screen对象是Surface,您可以创建自己Surface与显示屏幕分开对象

2K40

pygame中几个重要模块

surface对象 加载图像返回也是一个surface对象,这里可能就会用到image模块 pygame.surface((width,height),flag=0,depth =0,mask = None...这个参数也可以传一个rect对象 pygame.surface.fill(color) 对surface对象填充某一种颜色,可以主要是对背景可以实现填充 surface.get_rect()返回调用实例即为...鼠标事件中有pos成员,代表按下鼠标或者释放鼠标的时候记录下当前鼠标指针位置,以(x,y) 形式返回,而鼠标事件button属性则可以分别取值为1,2, 3,4,当button=1时时候代表按下鼠标左键...)这两种方法都返回指定类型和属性时间,可以将属性放在列表中,也可以中**来表示多个不定量属性 pygame.rect模块,Rect对象是用来存储矩形对象,Rect对象有一些虚拟属性,比如top.left...,centery两个属性 rect,move(speed),表示rect对象在横轴和纵轴方向上移动标杆,其实就是速度,通常获得surface对象rect对象,可以利用rect对象move方法来使得

1.5K20

关于数字雨特效学习

drops[i] = 0 pygame.display.flip() 这里我们使用雨滴1-9数字(可以根据自己喜好选择,可以是字母或者其他,基于博主实验,字符串应该也是可以...) (代码后有备注) 在这一部分中,有3点需要注意: 1.pygame.display.setmode(width,height),初始化窗口,前一个参数宽度,后一参数高度 2.pygame.surface...()函数中flags参数有两种选择:HWSURFACE——将创建surface对象放于显存中;SRCALPHA——每个像素包含一个alpha通道(用于控制透明度) 3.pygame.color()函数...:在这个链接中描述很详细 实现此数字雨特效原理就是动画效果,核心函数 winSur.blit() 效果如下 ?...('123.ttf', 25) bg_suface = pygame.Surface((PANEL_width, PANEL_highly), flags=pygame.SRCALPHA) pygame.Surface.convert

74610

PyGame 入门专业游戏开发(三)

第一篇介绍 Director 类,会在每一帧,都通过 pygame 把所有的用户输入事件,存放到 Director.events 属性中,所以每个 Sprite 子类对象,都可以在 update()...此类有的 pos 属性一个数组,记录选中麻将牌桌上坐标。...具体方法: 修改自己显示位置,把自己 add 到“特效层” effect 组里 设置一个倒计时属性 counter,需要显示多少帧时间,就设置为多少,这里 30,也就是一秒,因为 director.fps...= self.text.get_rect() # 生成一个刚好上面文字图像大小 image 对象 image = pygame.Surface((rect.width, rect.height))...由于本游戏只需要在一个地方显示文字,而且字体只需要一种,所以在 Table 对象属性中构造好字体对象 font、显示文字对象这两个对象 text_sprite。

15010

Python 玩出花儿了!一文教你用 Python 制作吃豆人游戏! | 附代码

而今天我们就将借助Pygame建立吃豆人游戏。 ? 吃豆人电子游戏历史上经典街机游戏,由Namco公司岩谷彻设计并由Midway Games在1980年发行。...Pac-Man被认为80年代最经典街机游戏之一,游戏主角小精灵形象甚至被作为一种大众文化符号,或是此产业代表形象。...一、实验前准备 首先我们使用python版本是3.6.5所用到模块pygame模块,用来创建游戏框架。Random模块用来随机生成方向。...游戏搭建 1、定义一些精灵: 整体类变量定义包括墙类,通过pygame图片填充作为墙类加载;同理还包括食物类和角色。而怪物随机运动使用random产生随机运动方向。...__init__(self) self.image = pygame.Surface([width, height]) self.image.fill(bg_color)

4.2K10

Python 0基础开发游戏:打地鼠(详细教程)VS code版本

其中import导入我们要使用外部代码模块,pygame当然必须,syssystem系统简写,因为我们游戏要运行在系统(windows或者苹果macOS)上面,所以我们会用到系统一些命令...整句话就是设置要弹出窗口大小,display显示,set设置,mode模式。 while 1:...当是1时候,就...,1在代码里面表示正确、真的、存在,相反,0表示错误、假、不存在。...可以是某个关键道具变化,比如对战游戏中塔被摧毁,也可以是玩家角色属性变化,比如格斗游戏中被击杀;也可以只是纯粹某项积分评比,用排行榜代替输赢。 游戏开发技术点 要能够在窗口内绘制图形。...() # 更新鼠标位置 sur.fill((0, 0, 0)) # 填充黑色 pygame.draw.circle(sur, (255, 0, 0), mpos, 10) # 在鼠标位置画红色圆...载入音效方法sd=pygame.mixer.Sound("hit.wav"),播放sd.play(0),这里0也是1次,一般音效不需要连续播放。

3.6K30

Python 玩出花儿了!一文教你用 Python 制作吃豆人游戏! | 附代码

而今天我们就将借助Pygame建立吃豆人游戏。 吃豆人电子游戏历史上经典街机游戏,由Namco公司岩谷彻设计并由Midway Games在1980年发行。...Pac-Man被认为80年代最经典街机游戏之一,游戏主角小精灵形象甚至被作为一种大众文化符号,或是此产业代表形象。...而Pygame模块跨平台Python模块,专为电子游戏设计,包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。...最终游戏效果如下可见: 一、实验前准备 首先我们使用python版本是3.6.5所用到模块pygame模块,用来创建游戏框架。Random模块用来随机生成方向。...如下图可见: 游戏搭建 1、定义一些精灵: 整体类变量定义包括墙类,通过pygame图片填充作为墙类加载;同理还包括食物类和角色。而怪物随机运动使用random产生随机运动方向。

1.5K30

Python进阶

,然后按下 TAB 键,iPython 会提示该对象能够调用 方法列表 使用内置函数 dir 传入 标识符 / 数据,可以查看对象 所有属性及方法 提示 __方法名__ 格式方法 Python...,定义成 __init__ 方法参数 在方法内部使用 self.属性 = 形参 接收外部传递参数 在创建对象时,使用 类名(属性1, 属性2...)...子类对象不能在自己方法内部,直接访问父类私有属性和私有方法 子类对象可以通过父类公有方法间接访问**私有属性或私有方法 ** 多态 在程序执行时,传入不同对象实参,就会产生不同执行效果...开发 并且被 程序员广泛使用 Python 包 / 模块 例如 pygame 就是一套非常成熟 游戏开发模块 pip 一个现代,通用 Python 包管理工具 提供了对 Python 包查找...关闭 file.close() 打开文件方式 open 函数默认以 只读方式 打开文件,并且返回文件对象 语法如下: f = open("文件名", "访问方式") 访问方式 说明 r 以只读方式打开文件

69870

pygame-游戏开发学习笔记(二)–模块表与背景图样例。

就是我们在学这个东西了…… pygame.rect 管理矩形区域 pygame.sndarray 操作声音数据 pygame.sprite 操作移动图像 pygame.surface 管理图像和屏幕...pygame.display.update()    #刷新一下画面 set_mode会返回一个Surface对象,代表了在桌面上出现那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个一个标志位...同时使用 OPENGL 创建一个OPENGL渲染窗口 RESIZABLE 创建一个可以改变大小窗口 NOFRAME 创建一个没有边框窗口 convert函数将图像数据都转化为Surface对象...blit个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用update更新一下,否则画面一片漆黑。...-游戏开发学习笔记(五)–pygame.Font,字体与中文以及错误检测问题 学习-用Python和Pygame写游戏-从入门到精通(6) pygame-游戏开发学习笔记(七)–pygame.draw

1.2K40

pygame-KidsCanCode系列jumpy-part0-使用sprite

__init__(self) # 注意:sprite必须指定image, rect这二个属性 self.image = pygame.Surface((20, 20))...大意说,如果子类继承自Sprite类,可以重写update(),同时可以指定image、rect属性,最后__init__初始化(构造函数)首行,必须调用父类__init__方法。...(视觉上看,感觉运动连贯)。...注: 让对象移动方法有N种,要点无非就是改变对象外切矩形Rect某个属性,Rect对象提供了N多与位置(及大小)相关属性,几乎想你所想: bottom = property(lambda self...这是该方法说明,大意说,返回值一个列表,里面包含了发生碰撞所有spriteRect对象;另外doKill参数,如果指定为True,则表示将发生碰撞sprite杀死;最后一个collided可以指定回调方法

54850
领券