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

如何在Pygame中实现窗口近乎最大化效果?

在Pygame中实现非全屏的窗口最大化效果

要实现保留窗口边框、仅占据系统可用工作区(排除任务栏等系统UI区域)的“近乎最大化”窗口,可通过以下步骤完成:

方法1:跨平台通用方案(借助tkinter获取工作区尺寸)

tkinter是Python标准库,可跨Windows、macOS、Linux获取系统工作区的准确尺寸,适合需要跨平台兼容的场景:

import pygame
import tkinter as tk

# 初始化Pygame
pygame.init()

# 用tkinter获取系统工作区大小(排除任务栏)
root = tk.Tk()
workspace_width = root.winfo_screenwidth()
workspace_height = root.winfo_screenheight()
root.destroy()

# 创建近乎最大化的窗口(保留边框、支持调整大小)
screen = pygame.display.set_mode((workspace_width, workspace_height), pygame.RESIZABLE)
pygame.display.set_caption("近乎最大化窗口")

# 主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    screen.fill((240, 240, 240))
    pygame.display.flip()

pygame.quit()

方法2:Windows平台专属方案(借助系统API)

如果仅针对Windows平台,可直接调用Windows系统API获取工作区尺寸,无需依赖tkinter:

import pygame
import ctypes

# 初始化Pygame
pygame.init()

# 调用Windows API获取工作区尺寸(排除任务栏)
user32 = ctypes.windll.user32
SM_CXWORKAREA = 0x30
SM_CYWORKAREA = 0x31
workspace_width = user32.GetSystemMetrics(SM_CXWORKAREA)
workspace_height = user32.GetSystemMetrics(SM_CYWORKAREA)

# 创建窗口
screen = pygame.display.set_mode((workspace_width, workspace_height), pygame.RESIZABLE)
pygame.display.set_caption("Windows专属近乎最大化窗口")

# 主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    screen.fill((240, 240, 240))
    pygame.display.flip()

pygame.quit()

关键说明

  • 不要使用pygame.FULLSCREEN参数,这会让窗口进入无边框的全屏模式,不符合需求。
  • pygame.RESIZABLE参数保留了窗口的调整功能,用户可手动拖动边框改变窗口大小。
  • 两种方法获取的尺寸都会自动排除系统任务栏、菜单栏等占用的区域,实现和你需求一致的“近乎最大化”效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:45:32