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

Pygame中第二条直线无法绘制问题求助

解决Pygame全屏模式下仅显示第一条直线的问题

问题根源是全屏模式的分辨率适配:你指定了(1000,800)的窗口尺寸,但启用pygame.FULLSCREEN后,Pygame会自动将窗口切换为显示器的原生分辨率,而非你设置的尺寸。这导致第二条线的坐标(999,0)、(999,799)超出了实际显示区域,因此无法看到。

以下是两种可行的解决方案:

方案1:基于实际全屏分辨率绘制

先获取显示器的原生分辨率,再以此为基准绘制线条,确保坐标在显示范围内:

import pygame
pygame.init()

# 获取显示器实际分辨率
screen_info = pygame.display.Info()
screen_w, screen_h = screen_info.current_w, screen_info.current_h

WINDOW = pygame.display.set_mode((screen_w, screen_h), pygame.FULLSCREEN)
while True:
    # 处理退出事件(避免全屏卡死)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
            pygame.quit()
            exit()

    WINDOW.fill((0,0,0))
    # 左侧竖线
    pygame.draw.line(WINDOW, (255,255,255), (0,0), (0, screen_h-1))
    # 右侧竖线
    pygame.draw.line(WINDOW, (255,255,255), (screen_w-1,0), (screen_w-1, screen_h-1))
    pygame.display.update()

方案2:强制缩放指定分辨率至全屏

如果你坚持使用(1000,800)的画布尺寸,可以添加pygame.SCALED标志,让Pygame自动将画布缩放适配全屏:

import pygame
pygame.init()

WINDOW = pygame.display.set_mode((1000,800), pygame.FULLSCREEN | pygame.SCALED)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
            pygame.quit()
            exit()

    WINDOW.fill((0,0,0))
    pygame.draw.line(WINDOW, (255,255,255), (0,0),(0,799))
    pygame.draw.line(WINDOW, (255,255,255), (999,0),(999,799))
    pygame.display.update()

注意:原代码缺少事件处理逻辑,全屏模式下无法正常退出,建议补充上述代码中的退出事件处理,避免程序卡死。

内容的提问来源于stack exchange,提问作者Ihaveknowideawhatimdoing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:42:40