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

win.display.blit(rightImg,(arrX-20,arrY-20)) AttributeError:'pygame.Surface‘对象没有'display’属性

这个错误是由于在pygame.Surface对象上调用了不存在的'display'属性导致的。根据错误信息,我们可以推断出问题出现在win.display.blit(rightImg,(arrX-20,arrY-20))这一行代码上。

解决这个问题的方法是检查代码中的变量和函数调用是否正确。根据错误信息,'pygame.Surface'对象没有'display'属性,因此我们需要确认win对象是一个pygame.Surface对象,并且确保它具有正确的属性和方法。

另外,根据代码中的命名约定,我们可以猜测win可能是一个窗口对象,而不是pygame.Surface对象。在pygame中,窗口对象通常是通过pygame.display.set_mode()函数创建的。

因此,我们需要确保以下几点:

  1. 确保已经正确导入了pygame模块,并且已经初始化了pygame。
  2. 使用pygame.display.set_mode()函数创建一个窗口对象,并将其赋值给win变量。
  3. 确保rightImg是一个有效的pygame.Surface对象。
  4. 确保arrX和arrY是正确的坐标值。

以下是一个示例代码,演示了如何使用pygame创建窗口对象并绘制一个图像:

代码语言:txt
复制
import pygame

# 初始化pygame
pygame.init()

# 创建窗口对象
win = pygame.display.set_mode((800, 600))

# 加载图像
rightImg = pygame.image.load('image.png')

# 设置图像位置
arrX = 100
arrY = 100

# 在窗口上绘制图像
win.blit(rightImg, (arrX-20, arrY-20))

# 更新窗口显示
pygame.display.flip()

# 游戏主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

# 退出pygame
pygame.quit()

请注意,上述示例代码仅用于演示如何解决给定的错误,并不包含完整的游戏循环和事件处理逻辑。实际使用时,您可能需要根据自己的需求进行适当的修改和扩展。

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

相关·内容

python 全解坦克大战 辅助类 附完整代码【雏形】

突然来的兴趣 这个坦克大战是基于 pygame 的,由于没有完整的学过 pygame,之前一直以为 pygame 对于长按键不支持监听,就在几天前我竟然发现了可以,然后就打开了我的世界大门。...=None,None,None,None self.collisions=[] self.enemy_list=[] 这些初始化后的该类属性之后将会在方法中用到,咱们用到时再做说明...print(self.shootobj.rect) print(len(self.shootobj)) #加组后一定要刷新,不然会读不到 surface.image 也就是没有在页面之上...接着 if self.control.isShoot==True: 这个判断表示是否按发射键(之后会在控制中进行讲解); 按下发射键后就开始创建发射对象,同样这个对象是ESprite 对象: #创建发射物...print(self.shootobj.rect) print(len(self.shootobj)) #加组后一定要刷新,不然会读不到 surface.image 也就是没有在页面之上

1.4K30

PyGame:Python 游戏编程入门-1

没有这些行,就没有pygame. 第 8 行设置程序的显示窗口。您提供一个列表或一个元组来指定要创建的窗口的宽度和高度。这个程序使用一个列表来创建一个每边 500 像素的方形窗口。...Surface对象在pygame. 稍后您将看到如何将图像加载到 a 中Surface并将其显示在屏幕上。 在pygame中,所有内容都在单个用户创建的 中查看display,可以是窗口或全屏。...它还为击键、鼠标移动和显示属性等内容定义了一些局部常量。您可以使用语法引用这些常量pygame.。...如果没有事件,则列表为空,处理程序不会做任何事情。 第 35 到 38 行检查当前event.type是否是KEYDOWN事件。如果是,则程序通过查看event.key属性来检查按下了哪个键。...如果没有调用.flip(),则不会显示任何内容。 精灵 在您的游戏设计中,玩家从左侧开始,障碍物从右侧进入。

2K40
  • 从DataFrame中删除列

    我们知道,如果用类似df.b这样访问属性的形式,也能得到DataFrame对象的列,虽然这种方法我不是很提倡使用,但很多数据科学的民工都这么干。...首先,del df['b']有效,是因为DataFrame对象中实现了__delitem__方法,在执行del df['b']时会调用该方法。但是del df.b呢,有没有调用此方法呢?...但是,当我们执行f.d = 4的操作时,并没有在StupidFrame中所创建的columns属性中增加键为d的键值对,而是为实例f增加了一个普通属性,名称是d。...: d 现在删除属性也能够奏效了。...columns: {'a': 1, 'c': 3, 'd': 4} StupidFrameDelAttr columns: {'a': 1, 'c': 3} 现在,就理解了前面使用del删除DataFrame对象属性的方法出问题的根源了

    6.9K20

    【Python 入门第十五讲】OOP(面向对象)思想

    数字 12 是一个对象,字符串“Hello, world”是一个对象,列表是一个可以容纳其他对象对象,依此类推。我们一直在使用对象,甚至可能没有意识到这一点。...对象由以下部分组成: 状态:它由对象属性表示。它还反映了对象属性。 行为:它由对象的方法表示。它还反映了一个对象对其他对象的响应。...我们可以通过 employee 类使用 person 类的方法,如上面代码中的 display 函数所示。子类还可以修改父类的行为,如通过 details() 方法所示。...__hiddenVariable) AttributeError: 'MyClass' object has no attribute '__hiddenVariable' 在上面的程序中,我们使用一个对象访问类外部的隐藏变量...Python 中没有任何东西是真正私有的;在内部,私有方法和属性的名称被动态地破坏和解开,使它们看起来无法通过它们的给定名称访问。

    24320

    听说你会玩 Python 系列 1 - 六酷技巧

    需要注意的是 a 实际上是个对象,要看它里面的内容,需要在 a 前面加个 * 字符。 你们现在肯定会想,有了 zip(),那有没有其反向操作的 unzip() 呢?...5 动态属性 这个技巧是我觉得最有用的。首先定一个金融产品的类 Instrument,并创建一个对象 inst。...inst = Instrument() inst.first_key = first_val 打印 inst.notional 会报错,错误是 Instrument 对象没有 notional 这样的属性名...,它有两个参数: 参数 1 - 对象 参数 2 - 属性名的变量名 代码如下: getattr(inst, first_key) 100000000 和静态属性相比,动态属性到底好在哪里呢?...每种产品具体的特征都不一样,如果用静态属性的将字典转成对象的话,代码会非常乱而且无法管理,但如果用动态属性的话,下面三行代码就能搞定(用 setattr())。

    99220

    python面向对象

    print("出发时间",self.ftime) print("到达时间",self.ttime) #实例化类其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字...来访问对象属性 a1.printinf() a2.printinf() #可以添加,删除,修改类的属性 # 添加一个 'train' 属性 a1.code = "train" print(a1.code...a1.ttime print(a1.ttime) #报错:AttributeError: 'Ticket' object has no attribute 'ttime' 2.类的封装 类中把某些属性和方法隐藏起来...父类的属性和方法子类可以使用 #python 类的继承 #面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。...() 通过上面的代码可以看到,不同的子类子类以及父类都有"display"方法,在代码末尾不同的对象调用相同的方法名,但结果却显示不同,这就是多态。

    51620

    Python游戏编程(Pygame)

    Surface对象 pygame.display.flip() 更新整个待显示的Surface对象到屏幕上 pygame.display.update() 更新部分内容显示到屏幕上,如果没有参数,则与flip...pygame.event.get()能够获取事件队列,使用for...in遍历事件,然后根据type属性判断事件类型。...事实上,屏幕也只是一个Surface,pygame.display.set_mode()就返回了一个屏幕Surface对象。...如果将ball这个Surface对象画到screen Surface 对象,需要使用blit()方法,最后使用display模块的flip()方法更新整个待显示的Surface对象到屏幕上。...运行上述代码,发现小球在屏幕中一闪而过,此时,小球并没有真正消失,而是移动到窗体之外,此时需要添加碰撞检测的功能。

    2.5K20

    python Class(类) and

    类被实例化为对象时才有相关的一些数据,才会对该对象的一些属性进行赋值,这些值就是所谓的数据。从某种角度理解这些对象属性就是变量。为对象属性赋值就是为变量赋值。...    def display(self):     定义类方法,属于可调用的属性         print self.spam          x = FirstClass()           ...实例化出一个对象x x.display()                调用x对象display方法                            class语句内,任何赋值语句都会创建类的属性...如前面的例子,x.display()会被自动转换为FirstClass.display(x),即调用类的方法来处理实例x。     因此,类中每个方法必须具有self参数,它隐含当前实例之意。...python规定,没有实例,方法不允许被调用,此即为“绑定”     class语句中的赋值语句会创建类属性,如前面例子中的spam     在类方法中对传给该方法的特殊参数self进行赋值会创建实例属性

    90320

    Python面向对象小白入门手把手级别教程

    Python中对象的概念很广泛,Python中的一切内容都可以称为对象,函数也是对象。...= Tencent(); print(t.name)运行后就会得到打印:2.私有成员与共有成员学过Java的同学可能知道Java的私有成员函数是受保护的,外界无法进行操作,但是Python中是并没有对私有成员提供严格的访问保护机制的...__display_name()) #会报错AttributeError: 'Tencent' object has no attribute '__display_name'使用智能的IDE可以看到是无法找到...__display_name()函数的点击后也是无法跳转的:这就是共有和私有的区别。...私有函数可以在内部函数中调用,例如本实例使用的getName()中调用了_ _display_name();3.数据成员数据成员的作用是用来说明对象特有的一些属性,例如一个学生,那么学生都包含什么?

    44320

    python 属性描述符

    Quantity#1')) # 20, 17.95 print(LineItem.weight) # 这种调用方式 # 描述符的 __get__ 方法接收到的 instance 参数值是 None # AttributeError...覆盖型与非覆盖型描述符对比 通过实例读取属性时, 通常返回的是实例中定义的属性; 但是,如果实例中没有指定的属性, 那么会获取类属性。...通过实例读取描述符会返回 描述符对象本身,因为没有处理读操作的 __get__ 方法。...如果直接通过实例的 __dict__ 属性创建同名实例属性,以后再设置那个属性时,仍会由 __set__ 方法 插手接管,但是读取那个属性的话,就会直接从实例中返回新赋予的值,而不会返回描述符对象。...也就是说,实例属性会遮盖描述符,不过 只有读操作是如此 # 这个覆盖型描述符没有 __get__ 方法,因此,obj.over_no_get 从 类 中获取描述符实例 print(obj.over_no_get

    39410

    流畅的 Python 第二版(GPT 重译)(十二)

    ③ 从模块全局范围获取该名称的对象;如果没有这样的对象,则获取Record类。 ④ 如果刚刚检索到的对象是一个类,并且是Record的子类… ⑤ …将factory名称绑定到它。...__speaker_objs # ② ① 如果实例没有名为 __speaker_objs 的属性,则获取演讲者对象并将它们存储在那里。 ② 返回 self.__speaker_objs。...在 Python 中,函数和类通常是可互换的,因为两者都是可调用的,而且没有用于对象实例化的new运算符,因此调用构造函数与调用工厂函数没有区别。...如果没有这样的属性存在,则getattr会引发AttributeError或返回default值(如果给定)。...通过实例读取描述符将返回描述符对象本身,因为没有__get__来处理该访问。

    13010

    使用 Python 和 Pygame 制作游戏:第一章到第五章

    返回的pygame.Surface对象(我们简称为 Surface 对象)存储在名为DISPLAYSURF的变量中。...(也称为属性)名为type,它告诉我们对象代表什么类型的事件。...由于 Surface 对象没有改变(例如,通过本章后面解释的一些绘图函数),每次调用pygame.display.update()时,相同的黑色图像都会重新绘制到屏幕上。 这就是整个程序。...如果重新分配right属性,则所有其他属性都会自动重新计算: >>> spamRect.right = 350 >>> spamRect.left 150 以下是pygame.Rect对象提供的所有属性列表...(第 14 行) 这个 Rect 对象将正确设置为呈现的文本的宽度和高度,但 top 和 left 属性将为0。 通过改变 Rect 对象属性来设置 Rect 对象的位置。

    1.2K10

    浅谈matplotlib中FigureCanvasXAgg的用法

    matplotlib.figure.Figure.show( ) def show(self, warn=True): """ If using a GUI backend with pyplot, display...as err: raise AttributeError("%s\n" "Figure.show works only " "for figures managed...global _show return _show(*args, **kw) 而我们继续查找就得到了,这是在backends包的__init__.py模块里的代码,代码说了一大堆,无非就是说它返回了四个对象...追寻matplotlib.figure.Figure() 而在matplotlib.figure.Figure() 中,其初始化函数__init__(),并没有默认生成manager这个属性,所以在调用...FigureCanvas(figure,canvas) figure:需要附加的图形(添加者),canvas提供渲染功能的对象(承载者) 每一次你调用FigureCanvas()的时候,你都是将图形附加到新画布上

    2.6K40

    【Python100天学习笔记】Day9 面向对象进阶

    @property装饰器 之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。...我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,那么如果想访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作。...通常,动态语言允许我们在程序运行时给对象绑定新的属性或方法,当然也可以对已经绑定的属性和方法进行解绑定。...但是如果我们需要限定自定义类型的对象只能绑定某些属性,可以通过在类中定义__slots__变量来进行限定。需要注意的是__slots__的限定只对当前类的对象生效,对子类并不起任何作用。...子类除了继承父类提供的属性和方法,还可以定义自己特有的属性和方法,所以子类比父类拥有的更多的能力,在实际开发中,我们经常会用子类对象去替换掉一个父类对象,这是面向对象编程中一个常见的行为,对应的原则称之为里氏替换原则

    22010

    Python 进阶指南(编程轻松进阶):十六、面向对象编程和继承

    如果一个ParentClass对象试图调用someNewMethod(),它只存在于ChildClass对象(以及ChildClass的子类),Python 会抛出一个AttributeError。...但是这两个阶级之间没有“是一”的关系;一个WizardCustomer对象不是一种WizCoin对象。...我们没有让WizardCustomer类从WizCoin继承方法,而是给了WizardCustomer类一个purse属性 1 ,其中包含一个WizCoin对象。...这意味着类方法中的代码不能访问单个对象属性或调用对象的常规方法。类方法只能调用其他类方法或访问类属性。...甚至这个“计算已经创建了多少个CreateCounter对象”的例子也可以通过使用一个全局变量而不是一个类属性来更简单地完成。 静态方法 一个静态方法没有一个self或cls参数。

    54220

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券