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

如何设置Pygame窗口全屏显示且不遮挡系统任务栏

解决方案

实现思路

  • 不要使用pygame.FULLSCREEN参数,该参数的设计目标是完全独占屏幕,必然会隐藏任务栏等系统组件
  • 你可以直接调用系统原生的窗口最大化功能,和Tkinter的state("zoomed")实现逻辑完全一致,自动适配系统工作区尺寸,不会遮挡任务栏

Windows平台完美实现方案(和Tkinter zoomed效果100%一致)

直接调用Windows系统自带的窗口最大化API,无需手动计算屏幕尺寸,适配所有分辨率和任务栏位置:

import pygame
import ctypes

pygame.init()
# 先创建任意大小的可缩放窗口
WIN = pygame.display.set_mode((800, 600), pygame.RESIZABLE)
pygame.display.set_caption("First Game!")
# 获取当前pygame窗口的系统句柄,调用系统最大化方法
hwnd = pygame.display.get_wm_info()['window']
ctypes.windll.user32.ShowWindow(hwnd, 3) # 参数3对应系统的SW_MAXIMIZE指令

WHITE = (255, 255, 255)
FPS = 60

def draw_window():
    WIN.fill(WHITE)
    pygame.display.update()

def main():
    clock = pygame.time.Clock()
    run = True
    while run:
        clock.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
        draw_window()
    pygame.quit()

if __name__ == "__main__":
    main()

跨平台通用简化方案(适配Mac/Linux/Windows)

不需要调用系统API,手动设置窗口尺寸适配工作区:

import pygame

pygame.init()
# 获取主显示器的完整分辨率
screen_width, screen_height = pygame.display.get_desktop_sizes()[0]
# 减去任务栏预估高度,Windows默认任务栏高度为40,Mac为50,Linux可根据桌面环境调整
work_height = screen_height - 40
# 创建和工作区尺寸一致的窗口,默认位于屏幕左上角
WIN = pygame.display.set_mode((screen_width, work_height), pygame.RESIZABLE)
pygame.display.set_caption("First Game!")

# 后续逻辑和上文一致,可直接复用

额外说明

  • 如果不需要保留窗口标题栏和关闭按钮,可以在set_mode的参数中添加pygame.NOFRAME,窗口会完全铺满工作区,视觉效果和全屏一致但不会遮挡任务栏
  • 如果需要适配多显示器场景,可通过pygame.display.get_desktop_sizes()获取所有显示器的分辨率,再对应调整窗口位置即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:00:00