You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame点击鼠标时无法在对应位置渲染rect矩形是什么原因?

问题原因

  • 核心错误是把pygame.init()和pygame.display.set_mode()放在了主循环内部,每次循环都会重新初始化pygame、创建全新的空白窗口,上一轮绘制的矩形会被直接清空,自然无法显示
  • 调用pygame.quit()后没有终止程序,后续循环继续执行会触发pygame相关报错
  • 未提前设置背景填充,容易出现绘制内容和背景色混淆的问题

修正后可运行代码

以下代码可以实现点击鼠标生成矩形、所有点击的矩形都保留在窗口的效果:

import pygame
from pygame.locals import *

# 初始化和窗口创建要放在主循环外,仅执行一次
pygame.init()
DISPLAY = pygame.display.set_mode((400,400))
WHITE = (255,255,255)
# 提前填充黑色背景
DISPLAY.fill((0,0,0))

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            exit() # 调用quit后直接终止程序,避免报错
        
        if event.type == KEYDOWN and event.key == K_ESCAPE:
            pygame.quit()
            exit()

        if event.type == MOUSEBUTTONDOWN:
            x,y = pygame.mouse.get_pos()
            pygame.draw.rect(DISPLAY,WHITE,(x,y,20,20))
            print('mouse')

    pygame.display.update()

如果你需要每次仅显示最新点击的矩形,把DISPLAY.fill((0,0,0))移动到主循环内部、事件处理代码的前面即可。

内容的提问来源于stack exchange,提问作者Tharusha-dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:21:02