Pygame中将鼠标形状设置为图片2-2

3 编写主程序

在主程序中,首先创建屏幕并且完成一些准备工作,之后在while循环中不断更新sprite实例即可。

3.1 创建屏幕及准备工作

创建屏幕及准备工作的代码如图5所示。

图5 创建屏幕及准备工作

其中,第20行代码调用pygame.mouse模块中的set_visible()方法,将其参数设置为False,表示隐藏鼠标;第22行中的going表示程序运行的标志,该值是True时表示程序继续运行,是False时表示程序终止;第23行中定义了Mouse()类的实例mouse;第24行代码使用使用pygame.sprite模块中的RenderPlain()方法将mouse加入到Group中,实际上RenderPlain()方法与Group()方法的作用相同。

相关链接2 创建屏幕的详细介绍请参考

Pygame显示文字_棉猴的博客-CSDN博客

相关链接3 sprite与Group的详细介绍请参考

Pygame中Sprite类的使用6-1-CSDN博客

3.2 在循环中更新sprite实例

在循环中更新sprite实例的代码如图6所示。

图6 在循环中更细sprite实例

其中,第26行中的going是控制程序是否运行的标志,当用户点击屏幕右上角的退出按键后,根据28-30行的代码,将going设置为False,此时while循环结束,程序退出;第27行代码的作用是重绘屏幕背景,这样就能覆盖之前鼠标显示的图片;31-32行代码通过Group来更新和绘制sprite实例,即调用了Mouse类的update()方法和draw()方法进行更新和绘制;最后第33行将绘制好的图片在屏幕上显示出来。

4 完整代码

以上提到的完整代码如下所示。

python 复制代码
import pygame

def load_image(name):
    image = pygame.image.load(name)
    image = image.convert()
    colorkey = image.get_at((0,0))
    image.set_colorkey(colorkey, pygame.RLEACCEL)
    return image, image.get_rect()

class Mouse(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image, self.rect = load_image('qiu.png')
    def update(self):
        self.rect.topleft = pygame.mouse.get_pos()
        self.rect.move_ip((0,0))
        
pygame.init()
screen = pygame.display.set_mode((1280, 480))
pygame.mouse.set_visible(False)
screen.fill((170, 238, 187))
going = True
mouse = Mouse()
allsprites = pygame.sprite.RenderPlain(mouse)

while going:
    screen.fill((170, 238, 187))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            going = False
    allsprites.update()
    allsprites.draw(screen)
    pygame.display.flip()
pygame.quit()
相关推荐
言乐61 天前
Python:用AES-GCM算法加密链接内容,并生成可分享的加密链接和解密工具
python·django·virtualenv·pygame·tornado
言乐62 天前
Python + NumPy 从零实现的 BP 神经网络(反向传播)脚本模型,包含前向传播、反向传播、训练和预测,并用 XOR 数据做示例
python·django·virtualenv·pygame·tornado
高级程序源2 天前
django校企合作实习基地管理系统82506-计算机课程设计、毕业设计
vue.js·后端·python·mysql·django·课程设计·pygame
李博士每天要洗澡3 天前
AI Agent 怎样参与视频剪辑?从任务描述、MCP 到可编辑时间线
大数据·人工智能·ai·django·pygame
专业程序开发源6 天前
springbootLivehouse票务系统-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·pygame
❀͜͡傀儡师7 天前
移动端 360° 商品展示方案:从 20MB 雪碧图到 800KB 丝滑视频
ffmpeg·webgl·sprite
troy1287 天前
分布式系统框架选型指南:主流框架优缺点深度对比
python·django·pygame
2401_8685347820 天前
校园网规划与设计
python·pygame
Wang ruoxi1 个月前
Pygame 小游戏——黑白棋(Othello)
python·pygame
言乐61 个月前
Python实现自动拉人脚本示例
开发语言·windows·python·django·pygame